{
  "swagger": "2.0",
  "info": {
    "title": "Infinimesh API",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "AccountsService"
    },
    {
      "name": "NamespacesService"
    },
    {
      "name": "DevicesService"
    },
    {
      "name": "SessionsService"
    },
    {
      "name": "ShadowService"
    },
    {
      "name": "RulesService"
    },
    {
      "name": "AuditService"
    },
    {
      "name": "GrantsService"
    },
    {
      "name": "InternalService",
      "description": "not revenue"
    },
    {
      "name": "PairingService"
    },
    {
      "name": "PluginsService"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/accounts": {
      "get": {
        "operationId": "AccountsService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "put": {
        "operationId": "AccountsService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/nodeAccountsV1CreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/nodeAccountsV1CreateRequest"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/accounts/{uuid}": {
      "get": {
        "operationId": "AccountsService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "delete": {
        "operationId": "AccountsService_Delete2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "patch": {
        "operationId": "AccountsService_Update2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AccountsServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/accounts/{uuid}/credentials": {
      "get": {
        "operationId": "AccountsService_GetCredentials2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1GetCredentialsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "post": {
        "operationId": "AccountsService_SetCredentials2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SetCredentialsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AccountsServiceSetCredentialsBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/accounts/{uuid}/credentials/{type}": {
      "delete": {
        "operationId": "AccountsService_DeleteCredentials2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/accounts/{uuid}/deletables": {
      "get": {
        "operationId": "AccountsService_Deletables2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Nodes"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/accounts/{uuid}/toggle": {
      "post": {
        "operationId": "AccountsService_Toggle2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AccountsServiceToggleBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/alarms": {
      "get": {
        "operationId": "RulesService_ListAlarms2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarms"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "device",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "state",
            "description": "RAISED is the default and returns raised and acknowledged alarms.\nACKED returns acknowledged alarms. CLEARED returns cleared alarms.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "RAISED",
              "ACKED",
              "CLEARED"
            ],
            "default": "RAISED"
          },
          {
            "name": "anyState",
            "description": "When true, state is ignored and every alarm is returned.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/alarms/{rule}/{device}/ack": {
      "post": {
        "operationId": "RulesService_AckAlarm2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarm"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "rule",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RulesServiceAckAlarmBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/alarms/{rule}/{device}/clear": {
      "post": {
        "operationId": "RulesService_ClearAlarm2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarm"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "rule",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RulesServiceClearAlarmBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/audit": {
      "get": {
        "operationId": "AuditService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuditRecords"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuditService"
        ]
      }
    },
    "/consents": {
      "get": {
        "operationId": "GrantsService_ListConsent2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Consents"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/devices": {
      "get": {
        "operationId": "DevicesService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Devices"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "put": {
        "operationId": "DevicesService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/nodeDevicesV1CreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/nodeDevicesV1CreateRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/claim-tokens": {
      "post": {
        "operationId": "DevicesService_IssueClaim2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ClaimIssueResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ClaimIssueRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/ota:assign": {
      "post": {
        "summary": "Assign an OTA target version",
        "description": "Sets desired.data.ota.version and updated_at. A manage-level account token is accepted when the namespace provider is none. Example body: {\"namespace\":\"plant\",\"version\":\"1.4.0\"}. A tag: {\"namespace\":\"plant\",\"tag\":\"line-a\",\"version\":\"1.4.0\"}. A device list: {\"devices\":[\"dev-1\",\"dev-2\"],\"version\":\"1.4.0\"}. results has one entry per device. When the namespace provider is hawkbit, mender, or webhook, the caller is the OTA plugin bearer token from plugin create, not an account token. Each success is an audit row with action ota_assign.",
        "operationId": "ShadowService_AssignOTA2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AssignOTAResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "AssignOTARequest sets desired.data.ota.version on each selected device.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AssignOTARequest"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/devices/states": {
      "get": {
        "operationId": "ShadowService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1GetResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pool",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "devices",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "device",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ShadowService"
        ]
      },
      "post": {
        "operationId": "ShadowService_Patch2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Shadow"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/devices/states/remove": {
      "post": {
        "operationId": "ShadowService_Remove2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1RemoveRequest"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/devices/states/stream": {
      "get": {
        "operationId": "ShadowService_StreamShadow2",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/v1Shadow"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "devices",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "onlyDelta",
            "description": "When true, each state message is the published change. When false, the stored shadow is sent with that change merged in.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sync",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Stream every device in this namespace that the account can read. Requires an account token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespaces",
            "description": "Namespaces watched by an account stream. Set by the API, not the client.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "account",
            "description": "Authenticated account for a scope stream. Set by the API, not the client.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "include",
            "description": "State sections to send: REPORTED, DESIRED, CONNECTION. Empty sends all three. Membership events are unchanged.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "REPORTED",
                "DESIRED",
                "CONNECTION"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "resumeAfter",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/devices/states:patchMany": {
      "post": {
        "summary": "Patch desired state on many devices",
        "description": "Example body: {\"namespace\":\"plant\",\"tag\":\"line-a\",\"desired\":{\"data\":{\"ota\":{\"version\":\"1.4.0\"}}}}. results has one entry per device. A non-empty error means that device was not updated.",
        "operationId": "ShadowService_PatchMany2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PatchManyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PatchManyRequest"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/devices/token": {
      "post": {
        "operationId": "DevicesService_MakeDevicesToken2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TokenResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesTokenRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/token/revoke": {
      "post": {
        "operationId": "DevicesService_RevokeDevicesToken2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1RevokeDeviceTokenRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/{device}/export": {
      "get": {
        "operationId": "AuditService_Export2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExportResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AuditService"
        ]
      }
    },
    "/devices/{uuid}": {
      "get": {
        "operationId": "DevicesService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.pemData",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.algorithm",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.fingerprint",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.rolloverFingerprint",
            "description": "Previous fingerprint that stays valid until the next rotation.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.revoked",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.revokedFingerprints",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "format": "byte"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "basicEnabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "token",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "delete": {
        "operationId": "DevicesService_Delete2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.pemData",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.algorithm",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.fingerprint",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.rolloverFingerprint",
            "description": "Previous fingerprint that stays valid until the next rotation.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.revoked",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.revokedFingerprints",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "format": "byte"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "basicEnabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "token",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "patch": {
        "operationId": "DevicesService_Update2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/{uuid}/certificate:revoke": {
      "post": {
        "operationId": "DevicesService_RevokeCertificate2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceRevokeCertificateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/{uuid}/certificate:rotate": {
      "post": {
        "operationId": "DevicesService_RotateCertificate2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceRotateCertificateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/{uuid}/toggle": {
      "post": {
        "operationId": "DevicesService_Toggle2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesServiceToggleBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices/{uuid}/toggle/basic": {
      "post": {
        "operationId": "DevicesService_ToggleBasic2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceToggleBasicBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices:bulk": {
      "post": {
        "operationId": "DevicesService_BulkCreate2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BulkCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1BulkCreateRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/devices:claim": {
      "post": {
        "operationId": "DevicesService_Claim2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ClaimResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ClaimRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/grants": {
      "get": {
        "operationId": "GrantsService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grants"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "node",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "GrantsService"
        ]
      },
      "post": {
        "operationId": "GrantsService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Grant is a time-limited access edge from one account to a device or namespace.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/grants/{id}/revoke": {
      "post": {
        "operationId": "GrantsService_Revoke2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1GrantsServiceRevokeBody"
            }
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/i/ldapp": {
      "get": {
        "operationId": "InternalService_GetLDAPProviders2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LDAPProviders"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "InternalService"
        ]
      }
    },
    "/namespaces": {
      "get": {
        "operationId": "NamespacesService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespaces"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "put": {
        "operationId": "NamespacesService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/namespaces/{namespace}/join": {
      "post": {
        "summary": "Sets Access to this namespace for the given account(deletes if level is set to NONE(0))",
        "operationId": "NamespacesService_Join2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NamespacesServiceJoinBody"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/namespaces/{uuid}": {
      "get": {
        "operationId": "NamespacesService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "delete": {
        "operationId": "NamespacesService_Delete2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "patch": {
        "summary": "Update a namespace, including its OTA provider",
        "description": "Example body: {\"uuid\":\"ns-1\",\"ota\":{\"enabled\":true,\"provider\":\"webhook\",\"webhookUrl\":\"https://ota.example/hook\"}}. provider is none, hawkbit, mender, or webhook. enabled can be true only when a plugin of kind OTA is registered. addonRegistered is ignored on write.",
        "operationId": "NamespacesService_Update2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1NamespacesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/namespaces/{uuid}/deletables": {
      "get": {
        "operationId": "NamespacesService_Deletables2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Nodes"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/namespaces/{uuid}/joins": {
      "get": {
        "summary": "Accounts having access to this namespace",
        "operationId": "NamespacesService_Joins2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/plugins": {
      "get": {
        "operationId": "PluginsService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugins"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "put": {
        "operationId": "PluginsService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          }
        ],
        "tags": [
          "PluginsService"
        ]
      }
    },
    "/plugins/{uuid}": {
      "get": {
        "operationId": "PluginsService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "logo",
            "description": "Plugin logo url in format supported by \u003cimg\u003e tag",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "public",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Required to get not-public Plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "kind",
            "description": " - EMBEDDED: Plugin will be embedded into Console as Page\n - OTA: An OTA addon. Registering one lets a namespace turn OTA on.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN",
              "EMBEDDED",
              "OTA"
            ],
            "default": "UNKNOWN"
          },
          {
            "name": "embeddedConf.frameUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "provider",
            "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tokenId",
            "description": "token_id is the jti of the addon token. It is not the secret.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "token",
            "description": "token is the addon bearer token. Create returns it once. It is not stored.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "delete": {
        "operationId": "PluginsService_Delete2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "logo",
            "description": "Plugin logo url in format supported by \u003cimg\u003e tag",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "public",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Required to get not-public Plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "kind",
            "description": " - EMBEDDED: Plugin will be embedded into Console as Page\n - OTA: An OTA addon. Registering one lets a namespace turn OTA on.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN",
              "EMBEDDED",
              "OTA"
            ],
            "default": "UNKNOWN"
          },
          {
            "name": "embeddedConf.frameUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "provider",
            "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tokenId",
            "description": "token_id is the jti of the addon token. It is not the secret.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "token",
            "description": "token is the addon bearer token. Create returns it once. It is not stored.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "post": {
        "operationId": "PluginsService_Update2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PluginsServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "PluginsService"
        ]
      }
    },
    "/rules": {
      "get": {
        "operationId": "RulesService_List2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rules"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "post": {
        "operationId": "RulesService_Create2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Rule is evaluated against each device shadow in its namespace.\nwhen and clear are CEL expressions. Names are reported, desired, connected, device, title, tags, and ns.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/rules/{uuid}": {
      "get": {
        "operationId": "RulesService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "when",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "clear",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "cooldown",
            "description": "Shortest time between two raises of the same rule and device, for example 10m.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "repeat",
            "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "onClear",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "delete": {
        "operationId": "RulesService_Delete2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "when",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "clear",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "cooldown",
            "description": "Shortest time between two raises of the same rule and device, for example 10m.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "repeat",
            "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "onClear",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "patch": {
        "operationId": "RulesService_Update2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1RulesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/sessions": {
      "get": {
        "operationId": "SessionsService_Get2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Sessions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/sessions/activity": {
      "get": {
        "operationId": "SessionsService_GetActivity2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Activity"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/sessions/{id}": {
      "delete": {
        "operationId": "SessionsService_Revoke2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "created",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "expires",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "client",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "current",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/token": {
      "post": {
        "operationId": "AccountsService_Token2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TokenResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1TokenRequest"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts": {
      "get": {
        "operationId": "AccountsService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "post": {
        "operationId": "AccountsService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/nodeAccountsV1CreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/nodeAccountsV1CreateRequest"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts/{uuid}": {
      "get": {
        "operationId": "AccountsService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "delete": {
        "operationId": "AccountsService_Delete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "patch": {
        "operationId": "AccountsService_Update",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AccountsServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts/{uuid}/credentials": {
      "get": {
        "operationId": "AccountsService_GetCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1GetCredentialsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      },
      "post": {
        "operationId": "AccountsService_SetCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SetCredentialsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AccountsServiceSetCredentialsBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts/{uuid}/credentials/{type}": {
      "delete": {
        "operationId": "AccountsService_DeleteCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts/{uuid}/deletables": {
      "get": {
        "operationId": "AccountsService_Deletables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Nodes"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "defaultNamespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/accounts/{uuid}/toggle": {
      "post": {
        "operationId": "AccountsService_Toggle",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Account"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AccountsServiceToggleBody"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    },
    "/v1/alarms": {
      "get": {
        "operationId": "RulesService_ListAlarms",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarms"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "device",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "state",
            "description": "RAISED is the default and returns raised and acknowledged alarms.\nACKED returns acknowledged alarms. CLEARED returns cleared alarms.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "RAISED",
              "ACKED",
              "CLEARED"
            ],
            "default": "RAISED"
          },
          {
            "name": "anyState",
            "description": "When true, state is ignored and every alarm is returned.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/v1/alarms/{rule}/{device}/ack": {
      "post": {
        "operationId": "RulesService_AckAlarm",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarm"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "rule",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RulesServiceAckAlarmBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/v1/alarms/{rule}/{device}/clear": {
      "post": {
        "operationId": "RulesService_ClearAlarm",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Alarm"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "rule",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RulesServiceClearAlarmBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/v1/audit": {
      "get": {
        "operationId": "AuditService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuditRecords"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuditService"
        ]
      }
    },
    "/v1/consents": {
      "get": {
        "operationId": "GrantsService_ListConsent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Consents"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/v1/devices": {
      "get": {
        "operationId": "DevicesService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Devices"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "post": {
        "operationId": "DevicesService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/nodeDevicesV1CreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/nodeDevicesV1CreateRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/claim-tokens": {
      "post": {
        "operationId": "DevicesService_IssueClaim",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ClaimIssueResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ClaimIssueRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/ota:assign": {
      "post": {
        "summary": "Assign an OTA target version",
        "description": "Sets desired.data.ota.version and updated_at. A manage-level account token is accepted when the namespace provider is none. Example body: {\"namespace\":\"plant\",\"version\":\"1.4.0\"}. A tag: {\"namespace\":\"plant\",\"tag\":\"line-a\",\"version\":\"1.4.0\"}. A device list: {\"devices\":[\"dev-1\",\"dev-2\"],\"version\":\"1.4.0\"}. results has one entry per device. When the namespace provider is hawkbit, mender, or webhook, the caller is the OTA plugin bearer token from plugin create, not an account token. Each success is an audit row with action ota_assign.",
        "operationId": "ShadowService_AssignOTA",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AssignOTAResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "AssignOTARequest sets desired.data.ota.version on each selected device.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1AssignOTARequest"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/v1/devices/states/stream": {
      "get": {
        "operationId": "ShadowService_StreamShadow",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/v1Shadow"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "devices",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "onlyDelta",
            "description": "When true, each state message is the published change. When false, the stored shadow is sent with that change merged in.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sync",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Stream every device in this namespace that the account can read. Requires an account token.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespaces",
            "description": "Namespaces watched by an account stream. Set by the API, not the client.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "account",
            "description": "Authenticated account for a scope stream. Set by the API, not the client.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "include",
            "description": "State sections to send: REPORTED, DESIRED, CONNECTION. Empty sends all three. Membership events are unchanged.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "REPORTED",
                "DESIRED",
                "CONNECTION"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "resumeAfter",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "uint64"
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/v1/devices/states:patchMany": {
      "post": {
        "summary": "Patch desired state on many devices",
        "description": "Example body: {\"namespace\":\"plant\",\"tag\":\"line-a\",\"desired\":{\"data\":{\"ota\":{\"version\":\"1.4.0\"}}}}. results has one entry per device. A non-empty error means that device was not updated.",
        "operationId": "ShadowService_PatchMany",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PatchManyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PatchManyRequest"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/v1/devices/token": {
      "post": {
        "operationId": "DevicesService_MakeDevicesToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TokenResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesTokenRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/token/revoke": {
      "post": {
        "operationId": "DevicesService_RevokeDevicesToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1RevokeDeviceTokenRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/{device}/export": {
      "get": {
        "operationId": "AuditService_Export",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExportResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "AuditService"
        ]
      }
    },
    "/v1/devices/{device}/state": {
      "get": {
        "operationId": "ShadowService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1GetResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pool",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "devices",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "ShadowService"
        ]
      },
      "post": {
        "operationId": "ShadowService_Patch",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ShadowServicePatchBody"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/v1/devices/{device}/state:remove": {
      "post": {
        "operationId": "ShadowService_Remove",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Shadow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "device",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ShadowServiceRemoveBody"
            }
          }
        ],
        "tags": [
          "ShadowService"
        ]
      }
    },
    "/v1/devices/{uuid}": {
      "get": {
        "operationId": "DevicesService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.pemData",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.algorithm",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.fingerprint",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.rolloverFingerprint",
            "description": "Previous fingerprint that stays valid until the next rotation.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.revoked",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.revokedFingerprints",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "format": "byte"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "basicEnabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "token",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "delete": {
        "operationId": "DevicesService_Delete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.pemData",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.algorithm",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "certificate.fingerprint",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.rolloverFingerprint",
            "description": "Previous fingerprint that stays valid until the next rotation.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "byte"
          },
          {
            "name": "certificate.revoked",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "certificate.revokedFingerprints",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "format": "byte"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "basicEnabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "token",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "DevicesService"
        ]
      },
      "patch": {
        "operationId": "DevicesService_Update",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/{uuid}/certificate:revoke": {
      "post": {
        "operationId": "DevicesService_RevokeCertificate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceRevokeCertificateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/{uuid}/certificate:rotate": {
      "post": {
        "operationId": "DevicesService_RotateCertificate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceRotateCertificateBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/{uuid}/toggle": {
      "post": {
        "operationId": "DevicesService_Toggle",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1DevicesServiceToggleBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices/{uuid}/toggle/basic": {
      "post": {
        "operationId": "DevicesService_ToggleBasic",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Device"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DevicesServiceToggleBasicBody"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices:bulk": {
      "post": {
        "operationId": "DevicesService_BulkCreate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BulkCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1BulkCreateRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/devices:claim": {
      "post": {
        "operationId": "DevicesService_Claim",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ClaimResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ClaimRequest"
            }
          }
        ],
        "tags": [
          "DevicesService"
        ]
      }
    },
    "/v1/grants": {
      "get": {
        "operationId": "GrantsService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grants"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "node",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "GrantsService"
        ]
      },
      "post": {
        "operationId": "GrantsService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Grant is a time-limited access edge from one account to a device or namespace.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/v1/grants/{id}/revoke": {
      "post": {
        "operationId": "GrantsService_Revoke",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Grant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1GrantsServiceRevokeBody"
            }
          }
        ],
        "tags": [
          "GrantsService"
        ]
      }
    },
    "/v1/i/ldapp": {
      "get": {
        "operationId": "InternalService_GetLDAPProviders",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LDAPProviders"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "InternalService"
        ]
      }
    },
    "/v1/namespaces": {
      "get": {
        "operationId": "NamespacesService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespaces"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "post": {
        "operationId": "NamespacesService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/v1/namespaces/{namespace}/join": {
      "post": {
        "summary": "Sets Access to this namespace for the given account(deletes if level is set to NONE(0))",
        "operationId": "NamespacesService_Join",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NamespacesServiceJoinBody"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/v1/namespaces/{uuid}": {
      "get": {
        "operationId": "NamespacesService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "delete": {
        "operationId": "NamespacesService_Delete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      },
      "patch": {
        "summary": "Update a namespace, including its OTA provider",
        "description": "Example body: {\"uuid\":\"ns-1\",\"ota\":{\"enabled\":true,\"provider\":\"webhook\",\"webhookUrl\":\"https://ota.example/hook\"}}. provider is none, hawkbit, mender, or webhook. enabled can be true only when a plugin of kind OTA is registered. addonRegistered is ignored on write.",
        "operationId": "NamespacesService_Update",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1NamespacesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/v1/namespaces/{uuid}/deletables": {
      "get": {
        "operationId": "NamespacesService_Deletables",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Nodes"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/v1/namespaces/{uuid}/joins": {
      "get": {
        "summary": "Accounts having access to this namespace",
        "operationId": "NamespacesService_Joins",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Accounts"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "config",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.enabled",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "ota.backendUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.backend",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.provider",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.webhookUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ota.addonRegistered",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quota.maxDevices",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "quota.deviceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          },
          {
            "name": "quota.namespaceMessagesPerSecond",
            "in": "query",
            "required": false,
            "type": "number",
            "format": "double"
          }
        ],
        "tags": [
          "NamespacesService"
        ]
      }
    },
    "/v1/pairing": {
      "post": {
        "operationId": "PairingService_Send",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ControlPacket"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ControlPacket"
            }
          }
        ],
        "tags": [
          "PairingService"
        ]
      }
    },
    "/v1/pairing/connection": {
      "get": {
        "operationId": "PairingService_Connect",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/v1ControlPacket"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of v1ControlPacket"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "appId",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "payload",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "PairingService"
        ]
      }
    },
    "/v1/plugins": {
      "get": {
        "operationId": "PluginsService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugins"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "post": {
        "operationId": "PluginsService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          }
        ],
        "tags": [
          "PluginsService"
        ]
      }
    },
    "/v1/plugins/{uuid}": {
      "get": {
        "operationId": "PluginsService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "logo",
            "description": "Plugin logo url in format supported by \u003cimg\u003e tag",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "public",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Required to get not-public Plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "kind",
            "description": " - EMBEDDED: Plugin will be embedded into Console as Page\n - OTA: An OTA addon. Registering one lets a namespace turn OTA on.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN",
              "EMBEDDED",
              "OTA"
            ],
            "default": "UNKNOWN"
          },
          {
            "name": "embeddedConf.frameUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "provider",
            "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tokenId",
            "description": "token_id is the jti of the addon token. It is not the secret.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "token",
            "description": "token is the addon bearer token. Create returns it once. It is not stored.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "delete": {
        "operationId": "PluginsService_Delete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "logo",
            "description": "Plugin logo url in format supported by \u003cimg\u003e tag",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "title",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "public",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "namespace",
            "description": "Required to get not-public Plugin",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "access.level",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "NONE",
              "READ",
              "MGMT",
              "ADMIN",
              "ROOT"
            ],
            "default": "NONE"
          },
          {
            "name": "access.role",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNSET",
              "OWNER",
              "SHARED"
            ],
            "default": "UNSET"
          },
          {
            "name": "access.namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "kind",
            "description": " - EMBEDDED: Plugin will be embedded into Console as Page\n - OTA: An OTA addon. Registering one lets a namespace turn OTA on.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN",
              "EMBEDDED",
              "OTA"
            ],
            "default": "UNKNOWN"
          },
          {
            "name": "embeddedConf.frameUrl",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "provider",
            "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "tokenId",
            "description": "token_id is the jti of the addon token. It is not the secret.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "token",
            "description": "token is the addon bearer token. Create returns it once. It is not stored.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PluginsService"
        ]
      },
      "post": {
        "operationId": "PluginsService_Update",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Plugin"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PluginsServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "PluginsService"
        ]
      }
    },
    "/v1/rules": {
      "get": {
        "operationId": "RulesService_List",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rules"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "post": {
        "operationId": "RulesService_Create",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Rule is evaluated against each device shadow in its namespace.\nwhen and clear are CEL expressions. Names are reported, desired, connected, device, title, tags, and ns.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/v1/rules/{uuid}": {
      "get": {
        "operationId": "RulesService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "when",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "clear",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "cooldown",
            "description": "Shortest time between two raises of the same rule and device, for example 10m.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "repeat",
            "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "onClear",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "delete": {
        "operationId": "RulesService_Delete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "when",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "clear",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "cooldown",
            "description": "Shortest time between two raises of the same rule and device, for example 10m.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "repeat",
            "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "onClear",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RulesService"
        ]
      },
      "patch": {
        "operationId": "RulesService_Update",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Rule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1RulesServiceUpdateBody"
            }
          }
        ],
        "tags": [
          "RulesService"
        ]
      }
    },
    "/v1/sessions": {
      "get": {
        "operationId": "SessionsService_Get",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Sessions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "pageToken",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/v1/sessions/activity": {
      "get": {
        "operationId": "SessionsService_GetActivity",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Activity"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/v1/sessions/{id}": {
      "delete": {
        "operationId": "SessionsService_Revoke",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "created",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "expires",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "client",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "current",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SessionsService"
        ]
      }
    },
    "/v1/token": {
      "post": {
        "operationId": "AccountsService_Token",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TokenResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1TokenRequest"
            }
          }
        ],
        "tags": [
          "AccountsService"
        ]
      }
    }
  },
  "definitions": {
    "AccountsServiceSetCredentialsBody": {
      "type": "object",
      "properties": {
        "credentials": {
          "$ref": "#/definitions/v1Credentials"
        }
      }
    },
    "DevicesServiceRevokeCertificateBody": {
      "type": "object",
      "properties": {
        "fingerprint": {
          "type": "string",
          "format": "byte",
          "description": "Empty revokes every fingerprint on the device."
        }
      }
    },
    "DevicesServiceRotateCertificateBody": {
      "type": "object",
      "properties": {
        "certificate": {
          "$ref": "#/definitions/v1Certificate"
        }
      }
    },
    "DevicesServiceToggleBasicBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "certificate": {
          "$ref": "#/definitions/v1Certificate"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicEnabled": {
          "type": "boolean"
        },
        "token": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "config": {
          "type": "object"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota",
          "description": "Filled on GetByFingerprint from the device's namespace. Not stored."
        }
      }
    },
    "NamespacesServiceJoinBody": {
      "type": "object",
      "properties": {
        "account": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Level"
        }
      }
    },
    "RulesServiceAckAlarmBody": {
      "type": "object"
    },
    "RulesServiceClearAlarmBody": {
      "type": "object"
    },
    "ShadowServicePatchBody": {
      "type": "object",
      "properties": {
        "reported": {
          "$ref": "#/definitions/v1State"
        },
        "desired": {
          "$ref": "#/definitions/v1State"
        },
        "connection": {
          "$ref": "#/definitions/v1ConnectionState"
        },
        "eventId": {
          "type": "string",
          "format": "uint64"
        },
        "title": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "event": {
          "$ref": "#/definitions/v1ShadowEvent"
        },
        "account": {
          "type": "string"
        },
        "sequence": {
          "type": "string",
          "format": "uint64"
        },
        "tag": {
          "type": "string",
          "description": "Tag that was added or removed when event is TAG_ADDED or TAG_REMOVED."
        }
      }
    },
    "ShadowServiceRemoveBody": {
      "type": "object",
      "properties": {
        "stateKey": {
          "$ref": "#/definitions/v1StateKey"
        },
        "key": {
          "type": "string"
        }
      }
    },
    "nodeAccountsV1CreateRequest": {
      "type": "object",
      "properties": {
        "account": {
          "$ref": "#/definitions/v1Account"
        },
        "credentials": {
          "$ref": "#/definitions/v1Credentials",
          "title": "Credentials for New Account"
        },
        "namespace": {
          "type": "string",
          "title": "Namespace to put Account under"
        },
        "access": {
          "type": "integer",
          "format": "int32",
          "title": "Account access level to parent namespace"
        }
      }
    },
    "nodeAccountsV1CreateResponse": {
      "type": "object",
      "properties": {
        "account": {
          "$ref": "#/definitions/v1Account"
        }
      }
    },
    "nodeDevicesV1CreateRequest": {
      "type": "object",
      "properties": {
        "device": {
          "$ref": "#/definitions/v1Device"
        },
        "namespace": {
          "type": "string",
          "title": "Namespace to put device under"
        },
        "pairing": {
          "$ref": "#/definitions/v1PairingCreate"
        }
      }
    },
    "nodeDevicesV1CreateResponse": {
      "type": "object",
      "properties": {
        "device": {
          "$ref": "#/definitions/v1Device"
        }
      }
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "v1Access": {
      "type": "object",
      "properties": {
        "level": {
          "$ref": "#/definitions/v1Level"
        },
        "role": {
          "$ref": "#/definitions/v1Role"
        },
        "namespace": {
          "type": "string"
        }
      }
    },
    "v1Account": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "defaultNamespace": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        }
      }
    },
    "v1Accounts": {
      "type": "object",
      "properties": {
        "accounts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Account"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1AccountsServiceToggleBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "defaultNamespace": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        }
      }
    },
    "v1AccountsServiceUpdateBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "defaultNamespace": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        }
      }
    },
    "v1Action": {
      "type": "object",
      "properties": {
        "log": {
          "$ref": "#/definitions/v1LogAction"
        },
        "webhook": {
          "$ref": "#/definitions/v1WebhookAction"
        },
        "mqtt": {
          "$ref": "#/definitions/v1MQTTAction"
        },
        "desired": {
          "type": "object"
        }
      }
    },
    "v1Activity": {
      "type": "object",
      "properties": {
        "lastSeen": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "date-time"
          }
        }
      }
    },
    "v1Alarm": {
      "type": "object",
      "properties": {
        "rule": {
          "type": "string"
        },
        "device": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "state": {
          "$ref": "#/definitions/v1AlarmState"
        },
        "raisedAt": {
          "type": "string",
          "format": "date-time"
        },
        "firedAt": {
          "type": "string",
          "format": "date-time"
        },
        "ackedAt": {
          "type": "string",
          "format": "date-time"
        },
        "clearedAt": {
          "type": "string",
          "format": "date-time"
        },
        "count": {
          "type": "integer",
          "format": "int32"
        },
        "namespace": {
          "type": "string"
        }
      }
    },
    "v1AlarmState": {
      "type": "string",
      "enum": [
        "RAISED",
        "ACKED",
        "CLEARED"
      ],
      "default": "RAISED"
    },
    "v1Alarms": {
      "type": "object",
      "properties": {
        "alarms": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Alarm"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1AssignOTARequest": {
      "type": "object",
      "example": {
        "namespace": "plant",
        "version": "1.4.0"
      },
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Every manageable device in this namespace. Combine with tag to narrow the set."
        },
        "tag": {
          "type": "string"
        },
        "devices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "When set, only these devices are assigned. Each one is listed in results."
        },
        "version": {
          "type": "string"
        }
      },
      "description": "AssignOTARequest sets desired.data.ota.version on each selected device."
    },
    "v1AssignOTAResponse": {
      "type": "object",
      "example": {
        "updated": 2,
        "results": [
          {
            "device": "dev-1"
          },
          {
            "device": "dev-2"
          }
        ]
      },
      "properties": {
        "updated": {
          "type": "integer",
          "format": "int32"
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DevicePatchResult"
          }
        }
      }
    },
    "v1AuditRecord": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "account": {
          "type": "string"
        },
        "device": {
          "type": "string"
        },
        "tokenId": {
          "type": "string",
          "description": "jti of the token that performed the read, when the token has one."
        },
        "at": {
          "type": "string",
          "format": "date-time"
        },
        "action": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      },
      "description": "AuditRecord is one audit log row. action is read, create, token, ota_assign, alarm_ack, or alarm_clear.\nThe collection is append-only."
    },
    "v1AuditRecords": {
      "type": "object",
      "properties": {
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AuditRecord"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1BulkCreateRequest": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string"
        },
        "devices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Device"
          }
        }
      }
    },
    "v1BulkCreateResponse": {
      "type": "object",
      "properties": {
        "devices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Device"
          }
        }
      }
    },
    "v1Certificate": {
      "type": "object",
      "properties": {
        "pemData": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "fingerprint": {
          "type": "string",
          "format": "byte"
        },
        "rolloverFingerprint": {
          "type": "string",
          "format": "byte",
          "description": "Previous fingerprint that stays valid until the next rotation."
        },
        "revoked": {
          "type": "boolean"
        },
        "revokedFingerprints": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "byte"
          }
        }
      }
    },
    "v1ClaimIssueRequest": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64",
          "description": "Unix seconds. The factory token stops working at this time."
        }
      }
    },
    "v1ClaimIssueResponse": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1ClaimRequest": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        },
        "device": {
          "$ref": "#/definitions/v1Device"
        }
      }
    },
    "v1ClaimResponse": {
      "type": "object",
      "properties": {
        "device": {
          "$ref": "#/definitions/v1Device"
        }
      }
    },
    "v1Code": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "AUTH",
        "DATA",
        "SUCCESS",
        "ERROR"
      ],
      "default": "UNKNOWN"
    },
    "v1ConnectionState": {
      "type": "object",
      "properties": {
        "connected": {
          "type": "boolean"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "clientId": {
          "type": "string"
        }
      }
    },
    "v1Consent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "grantor": {
          "type": "string"
        },
        "grantee": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "at": {
          "type": "string",
          "format": "int64"
        },
        "revokedAt": {
          "type": "string",
          "format": "int64"
        },
        "grantId": {
          "type": "string"
        }
      },
      "description": "Consent records who granted access to whom, for what scope, and when it was revoked."
    },
    "v1Consents": {
      "type": "object",
      "properties": {
        "consents": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Consent"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1ControlPacket": {
      "type": "object",
      "properties": {
        "code": {
          "$ref": "#/definitions/v1Code"
        },
        "payload": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "payload simply depends on returned code"
        },
        "appId": {
          "type": "string"
        }
      }
    },
    "v1Credentials": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1DeleteResponse": {
      "type": "object"
    },
    "v1Device": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "certificate": {
          "$ref": "#/definitions/v1Certificate"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicEnabled": {
          "type": "boolean"
        },
        "token": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "config": {
          "type": "object"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota",
          "description": "Filled on GetByFingerprint from the device's namespace. Not stored."
        }
      }
    },
    "v1DeviceMeta": {
      "type": "object",
      "properties": {
        "device": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1DevicePatchResult": {
      "type": "object",
      "properties": {
        "device": {
          "type": "string"
        },
        "error": {
          "type": "string",
          "description": "Empty when the patch was stored."
        }
      }
    },
    "v1Devices": {
      "type": "object",
      "properties": {
        "devices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Device"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1DevicesServiceToggleBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "certificate": {
          "$ref": "#/definitions/v1Certificate"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicEnabled": {
          "type": "boolean"
        },
        "token": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "config": {
          "type": "object"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota",
          "description": "Filled on GetByFingerprint from the device's namespace. Not stored."
        }
      }
    },
    "v1DevicesServiceUpdateBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "certificate": {
          "$ref": "#/definitions/v1Certificate"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicEnabled": {
          "type": "boolean"
        },
        "token": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "config": {
          "type": "object"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota",
          "description": "Filled on GetByFingerprint from the device's namespace. Not stored."
        }
      }
    },
    "v1DevicesTokenRequest": {
      "type": "object",
      "properties": {
        "devices": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Level"
          }
        },
        "exp": {
          "type": "string",
          "format": "int64"
        },
        "post": {
          "type": "boolean"
        },
        "namespace": {
          "type": "string"
        },
        "stream": {
          "type": "boolean"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "v1EmbededPluginConf": {
      "type": "object",
      "properties": {
        "frameUrl": {
          "type": "string"
        }
      }
    },
    "v1ExportResponse": {
      "type": "object",
      "properties": {
        "device": {
          "$ref": "#/definitions/v1Device"
        },
        "shadow": {
          "$ref": "#/definitions/v1Shadow"
        },
        "history": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "ExportResponse is the device registry entry, the current shadow, and references to stored history."
    },
    "v1GetCredentialsResponse": {
      "type": "object",
      "properties": {
        "credentials": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Credentials"
          }
        }
      }
    },
    "v1GetResponse": {
      "type": "object",
      "properties": {
        "shadows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Shadow"
          }
        }
      }
    },
    "v1Grant": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "fromAccount": {
          "type": "string"
        },
        "toAccount": {
          "type": "string"
        },
        "node": {
          "type": "string",
          "description": "Device or namespace id."
        },
        "level": {
          "$ref": "#/definitions/v1Level"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64",
          "description": "Unix seconds. Required. Access stops at this time."
        },
        "scope": {
          "type": "string"
        },
        "revoked": {
          "type": "boolean"
        }
      },
      "description": "Grant is a time-limited access edge from one account to a device or namespace."
    },
    "v1Grants": {
      "type": "object",
      "properties": {
        "grants": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Grant"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1GrantsServiceRevokeBody": {
      "type": "object",
      "properties": {
        "fromAccount": {
          "type": "string"
        },
        "toAccount": {
          "type": "string"
        },
        "node": {
          "type": "string",
          "description": "Device or namespace id."
        },
        "level": {
          "$ref": "#/definitions/v1Level"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64",
          "description": "Unix seconds. Required. Access stops at this time."
        },
        "scope": {
          "type": "string"
        },
        "revoked": {
          "type": "boolean"
        }
      },
      "description": "Grant is a time-limited access edge from one account to a device or namespace."
    },
    "v1LDAPProviders": {
      "type": "object",
      "properties": {
        "providers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "map of keys to titles (titles can be empty)"
        }
      }
    },
    "v1Level": {
      "type": "string",
      "enum": [
        "NONE",
        "READ",
        "MGMT",
        "ADMIN",
        "ROOT"
      ],
      "default": "NONE"
    },
    "v1LogAction": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        }
      }
    },
    "v1MQTTAction": {
      "type": "object",
      "properties": {
        "topic": {
          "type": "string"
        },
        "qos": {
          "type": "integer",
          "format": "int64"
        },
        "retain": {
          "type": "boolean"
        }
      }
    },
    "v1Namespace": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "plugin": {
          "type": "string"
        },
        "config": {
          "type": "object"
        },
        "ota": {
          "$ref": "#/definitions/v1OTAConfig"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota"
        }
      }
    },
    "v1Namespaces": {
      "type": "object",
      "properties": {
        "namespaces": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Namespace"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1NamespacesServiceUpdateBody": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "plugin": {
          "type": "string"
        },
        "config": {
          "type": "object"
        },
        "ota": {
          "$ref": "#/definitions/v1OTAConfig"
        },
        "quota": {
          "$ref": "#/definitions/v1Quota"
        }
      }
    },
    "v1Node": {
      "type": "object",
      "properties": {
        "node": {
          "type": "string"
        },
        "parent": {
          "type": "string"
        },
        "edge": {
          "type": "string",
          "title": "@private"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        }
      }
    },
    "v1Nodes": {
      "type": "object",
      "properties": {
        "nodes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Node"
          }
        }
      }
    },
    "v1OTAConfig": {
      "type": "object",
      "example": {
        "enabled": true,
        "provider": "webhook",
        "webhookUrl": "https://ota.example/hook"
      },
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "backendUrl": {
          "type": "string"
        },
        "backend": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "webhookUrl": {
          "type": "string"
        },
        "addonRegistered": {
          "type": "boolean"
        }
      },
      "description": "OTAConfig names who may write desired.ota.\nenabled can be set only when an OTA addon is registered: a plugin of kind OTA\nthat is public, or whose namespace is this namespace.\nprovider is none, hawkbit, mender, or webhook. Empty is none.\nwebhook_url is required when provider is webhook.\nbackend_url and backend are ignored.\naddon_registered is set on read and ignored on write."
    },
    "v1PairingCreate": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "payload": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1PatchManyRequest": {
      "type": "object",
      "example": {
        "namespace": "plant",
        "tag": "line-a",
        "desired": {
          "data": {
            "ota": {
              "version": "1.4.0",
              "updated_at": "2026-10-13T12:00:00Z"
            }
          }
        }
      },
      "properties": {
        "devices": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "desired": {
          "$ref": "#/definitions/v1State",
          "description": "Applied as desired state on every device."
        },
        "namespace": {
          "type": "string",
          "description": "Resolved by the API to devices before the shadow process sees the call."
        },
        "tag": {
          "type": "string"
        }
      }
    },
    "v1PatchManyResponse": {
      "type": "object",
      "example": {
        "updated": 1,
        "results": [
          {
            "device": "dev-1"
          },
          {
            "device": "dev-2",
            "error": "ota status must be idle, downloading, installing, success, or failed"
          }
        ]
      },
      "properties": {
        "updated": {
          "type": "integer",
          "format": "int32"
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DevicePatchResult"
          }
        }
      }
    },
    "v1Plugin": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "logo": {
          "type": "string",
          "title": "Plugin logo url in format supported by \u003cimg\u003e tag"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "namespace": {
          "type": "string",
          "title": "Required to get not-public Plugin"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "kind": {
          "$ref": "#/definitions/v1PluginKind"
        },
        "embeddedConf": {
          "$ref": "#/definitions/v1EmbededPluginConf"
        },
        "provider": {
          "type": "string",
          "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA."
        },
        "tokenId": {
          "type": "string",
          "description": "token_id is the jti of the addon token. It is not the secret."
        },
        "token": {
          "type": "string",
          "description": "token is the addon bearer token. Create returns it once. It is not stored."
        }
      }
    },
    "v1PluginKind": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "EMBEDDED",
        "OTA"
      ],
      "default": "UNKNOWN",
      "description": " - EMBEDDED: Plugin will be embedded into Console as Page\n - OTA: An OTA addon. Registering one lets a namespace turn OTA on."
    },
    "v1Plugins": {
      "type": "object",
      "properties": {
        "pool": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Plugin"
          }
        },
        "nextPageToken": {
          "type": "string"
        },
        "plugins": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Plugin"
          }
        }
      }
    },
    "v1PluginsServiceUpdateBody": {
      "type": "object",
      "properties": {
        "logo": {
          "type": "string",
          "title": "Plugin logo url in format supported by \u003cimg\u003e tag"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "namespace": {
          "type": "string",
          "title": "Required to get not-public Plugin"
        },
        "access": {
          "$ref": "#/definitions/v1Access"
        },
        "kind": {
          "$ref": "#/definitions/v1PluginKind"
        },
        "embeddedConf": {
          "$ref": "#/definitions/v1EmbededPluginConf"
        },
        "provider": {
          "type": "string",
          "description": "provider is hawkbit, mender, or webhook. Required when kind is OTA."
        },
        "tokenId": {
          "type": "string",
          "description": "token_id is the jti of the addon token. It is not the secret."
        },
        "token": {
          "type": "string",
          "description": "token is the addon bearer token. Create returns it once. It is not stored."
        }
      }
    },
    "v1Quota": {
      "type": "object",
      "properties": {
        "maxDevices": {
          "type": "integer",
          "format": "int32"
        },
        "deviceMessagesPerSecond": {
          "type": "number",
          "format": "double"
        },
        "namespaceMessagesPerSecond": {
          "type": "number",
          "format": "double"
        }
      },
      "description": "Quota limits a namespace. Zero means no limit."
    },
    "v1RemoveRequest": {
      "type": "object",
      "properties": {
        "device": {
          "type": "string"
        },
        "stateKey": {
          "$ref": "#/definitions/v1StateKey"
        },
        "key": {
          "type": "string"
        }
      }
    },
    "v1RevokeDeviceTokenRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "token": {
          "type": "string"
        }
      }
    },
    "v1Role": {
      "type": "string",
      "enum": [
        "UNSET",
        "OWNER",
        "SHARED"
      ],
      "default": "UNSET"
    },
    "v1Rule": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "when": {
          "type": "string"
        },
        "clear": {
          "type": "string"
        },
        "cooldown": {
          "type": "string",
          "description": "Shortest time between two raises of the same rule and device, for example 10m."
        },
        "repeat": {
          "type": "string",
          "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h."
        },
        "onClear": {
          "type": "boolean"
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Action"
          }
        }
      },
      "description": "Rule is evaluated against each device shadow in its namespace.\nwhen and clear are CEL expressions. Names are reported, desired, connected, device, title, tags, and ns."
    },
    "v1Rules": {
      "type": "object",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Rule"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1RulesServiceUpdateBody": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "when": {
          "type": "string"
        },
        "clear": {
          "type": "string"
        },
        "cooldown": {
          "type": "string",
          "description": "Shortest time between two raises of the same rule and device, for example 10m."
        },
        "repeat": {
          "type": "string",
          "description": "Fire the actions again this often while the alarm stays raised and unacked, for example 1h."
        },
        "onClear": {
          "type": "boolean"
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Action"
          }
        }
      },
      "description": "Rule is evaluated against each device shadow in its namespace.\nwhen and clear are CEL expressions. Names are reported, desired, connected, device, title, tags, and ns."
    },
    "v1Session": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "expires": {
          "type": "string",
          "format": "date-time"
        },
        "client": {
          "type": "string"
        },
        "current": {
          "type": "boolean"
        }
      }
    },
    "v1Sessions": {
      "type": "object",
      "properties": {
        "sessions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Session"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "v1SetCredentialsResponse": {
      "type": "object"
    },
    "v1Shadow": {
      "type": "object",
      "properties": {
        "device": {
          "type": "string"
        },
        "reported": {
          "$ref": "#/definitions/v1State"
        },
        "desired": {
          "$ref": "#/definitions/v1State"
        },
        "connection": {
          "$ref": "#/definitions/v1ConnectionState"
        },
        "eventId": {
          "type": "string",
          "format": "uint64"
        },
        "title": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "event": {
          "$ref": "#/definitions/v1ShadowEvent"
        },
        "account": {
          "type": "string"
        },
        "sequence": {
          "type": "string",
          "format": "uint64"
        },
        "tag": {
          "type": "string",
          "description": "Tag that was added or removed when event is TAG_ADDED or TAG_REMOVED."
        }
      }
    },
    "v1ShadowEvent": {
      "type": "string",
      "enum": [
        "STATE",
        "DEVICE_ADDED",
        "DEVICE_REMOVED",
        "TAG_ADDED",
        "TAG_REMOVED",
        "OTA_TARGET_SET",
        "OTA_STATUS_CHANGED"
      ],
      "default": "STATE",
      "description": " - TAG_ADDED: A tag was added. tag names it. tags is the full list after the change.\n - TAG_REMOVED: A tag was removed. tag names it. tags is the full list after the change.\n - OTA_TARGET_SET: desired.data.ota.version changed.\n - OTA_STATUS_CHANGED: reported.data.ota.status changed."
    },
    "v1State": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "data": {
          "type": "object"
        },
        "version": {
          "type": "string",
          "format": "uint64"
        }
      },
      "description": "State is one section of a device shadow.\ndata.ota, when present, is an object. A patch may set any subset of these fields:\nversion (string), url (string), sha256 (64 lowercase hex characters),\nsize (number, zero or greater), status (idle, downloading, installing, success, or failed),\nerror (string), updated_at (RFC3339). Any other key is rejected, including state and progress.\nA null data.ota clears the document."
    },
    "v1StateKey": {
      "type": "string",
      "enum": [
        "REPORTED",
        "DESIRED",
        "CONNECTION"
      ],
      "default": "REPORTED"
    },
    "v1TokenRequest": {
      "type": "object",
      "properties": {
        "auth": {
          "$ref": "#/definitions/v1Credentials"
        },
        "exp": {
          "type": "string",
          "format": "int64"
        },
        "uuid": {
          "type": "string"
        },
        "inf": {
          "type": "boolean"
        },
        "client": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string",
          "format": "int64"
        },
        "infinite": {
          "type": "boolean"
        }
      }
    },
    "v1TokenResponse": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string"
        }
      }
    },
    "v1WebhookAction": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "secret": {
          "type": "string"
        }
      }
    }
  }
}
