ThingsBoard edge-controller API

Edge

Operations 22

GET /api/edges Get Edges by Ids (getEdgesByIds) #
POST /api/edges Find Related Edges (findByQuery) #
POST /api/edge Create or Update Edge (saveEdge) #
POST /api/edge/{edgeId}/{ruleChainId}/root Set Root Rule Chain for Provided Edge (setEdgeRootRuleChain) #
POST /api/edge/sync/{edgeId} Sync Edge (syncEdge) #
POST /api/edge/bulk_import Import the Bulk of Edges (processEdgesBulkImport) #
POST /api/customer/{customerId}/edge/{edgeId} Assign Edge to Customer (assignEdgeToCustomer) #
POST /api/customer/public/edge/{edgeId} Make Edge Publicly Available (assignEdgeToPublicCustomer) #
GET /api/tenant/edges Get Tenant Edge (getTenantEdge) #
GET /api/tenant/edgeInfos Get Tenant Edge Infos (getTenantEdgeInfos) #
GET /api/edges/enabled Is Edges Support Enabled (isEdgesSupportEnabled) #
GET /api/edge/{edgeId} Get Edge (getEdgeById) #
DELETE /api/edge/{edgeId} Delete Edge (deleteEdge) #
GET /api/edge/{edgeId}/upgrade/available Is Edge Upgrade Enabled (isEdgeUpgradeAvailable) #
GET /api/edge/types Get Edge Types (getEdgeTypes) #
GET /api/edge/missingToRelatedRuleChains/{edgeId} Find Missing Rule Chains (findMissingToRelatedRuleChains) #
GET /api/edge/instructions/upgrade/{edgeVersion}/{method} Get Edge Upgrade Instructions (getEdgeUpgradeInstructions) #
GET /api/edge/instructions/install/{edgeId}/{method} Get Edge Install Instructions (getEdgeInstallInstructions) #
GET /api/edge/info/{edgeId} Get Edge Info (getEdgeInfoById) #
GET /api/customer/{customerId}/edges Get Customer Edges (getCustomerEdges) #
GET /api/customer/{customerId}/edgeInfos Get Customer Edge Infos (getCustomerEdgeInfos) #
DELETE /api/customer/edge/{edgeId} Unassign Edge from Customer (unassignEdgeFromCustomer) #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-device-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-deviceprofile-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-asset-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-assetprofile-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-entityrelation-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-alarm-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-rulechain-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-dashboard-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-tenant-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-customer-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/json-schema/thingsboard-user-schema.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/thingsboard-edge-controller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

thingsboard-edge-controller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ThingsBoard Admin admin-controller Edge Controller API
  description: 'ThingsBoard Admin API — subset of the ThingsBoard REST API (open-source IoT platform). Covers: Admin, Audit Log, Event, Usage Info, Queue, Queue Stats, Mail Config Template, Qr Code Settings, Job.'
  version: 4.3.0.3DEMO
  contact:
    name: ThingsBoard team
    url: https://thingsboard.io
    email: info@thingsboard.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://demo.thingsboard.io
  description: ThingsBoard Live Demo
- url: http://localhost:8080
  description: Local ThingsBoard server
tags:
- name: edge-controller
  description: Edge
paths:
  /api/edges:
    get:
      tags:
      - edge-controller
      summary: Get Edges by Ids (getEdgesByIds)
      description: 'Requested edges must be owned by tenant or assigned to customer which user is performing the request.


        Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
      operationId: getEdges
      parameters:
      - name: pageSize
        in: query
        description: Maximum amount of entities in a one page
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: Sequence number of page starting from 0
        required: true
        schema:
          type: integer
          format: int32
      - name: textSearch
        in: query
        description: The case insensitive 'substring' filter based on the edge name.
        required: false
        schema:
          type: string
      - name: sortProperty
        in: query
        description: Property of entity to sort by
        required: false
        schema:
          type: string
          enum:
          - createdTime
          - name
          - type
          - label
          - customerTitle
      - name: sortOrder
        in: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
        required: false
        schema:
          type: string
          enum:
          - ASC
          - DESC
      - name: edgeIds
        in: query
        description: A list of edges ids, separated by comma ','
        required: true
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  items:
                    $ref: '#/components/schemas/Edge'
                - $ref: '#/components/schemas/PageDataEdge'
    post:
      tags:
      - edge-controller
      summary: Find Related Edges (findByQuery)
      description: 'Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex ''EdgeSearchQuery'' object. See ''Model'' tab of the Parameters for more info.


        Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
      operationId: findByQuery_2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EdgeSearchQuery'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Edge'
  /api/edge:
    post:
      tags:
      - edge-controller
      summary: Create or Update Edge (saveEdge)
      description: "Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. \n\nAvailable for users with 'TENANT_ADMIN' authority."
      operationId: saveEdge
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Edge'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
  /api/edge/{edgeId}/{ruleChainId}/root:
    post:
      tags:
      - edge-controller
      summary: Set Root Rule Chain for Provided Edge (setEdgeRootRuleChain)
      description: "Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority."
      operationId: setEdgeRootRuleChain
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      - name: ruleChainId
        in: path
        description: A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
  /api/edge/sync/{edgeId}:
    post:
      tags:
      - edge-controller
      summary: Sync Edge (syncEdge)
      description: "Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority."
      operationId: syncEdge
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
  /api/edge/bulk_import:
    post:
      tags:
      - edge-controller
      summary: Import the Bulk of Edges (processEdgesBulkImport)
      description: 'There''s an ability to import the bulk of edges using the only .csv file.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: processEdgesBulkImport
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkImportRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkImportResultEdge'
  /api/customer/{customerId}/edge/{edgeId}:
    post:
      tags:
      - edge-controller
      summary: Assign Edge to Customer (assignEdgeToCustomer)
      description: 'Creates assignment of the edge to customer. Customer will be able to query edge afterwards.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: assignEdgeToCustomer
      parameters:
      - name: customerId
        in: path
        description: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
  /api/customer/public/edge/{edgeId}:
    post:
      tags:
      - edge-controller
      summary: Make Edge Publicly Available (assignEdgeToPublicCustomer)
      description: 'Edge will be available for non-authorized (not logged-in) users. This is useful to create dashboards that you plan to share/embed on a publicly available website. However, users that are logged-in and belong to different tenant will not be able to access the edge.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: assignEdgeToPublicCustomer
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
  /api/tenant/edges:
    get:
      tags:
      - edge-controller
      summary: Get Tenant Edge (getTenantEdge)
      description: 'Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: getTenantEdges
      parameters:
      - name: pageSize
        in: query
        description: Maximum amount of entities in a one page
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: Sequence number of page starting from 0
        required: true
        schema:
          type: integer
          format: int32
      - name: type
        in: query
        description: A string value representing the edge type. For example, 'default'
        required: false
        schema:
          type: string
      - name: textSearch
        in: query
        description: The case insensitive 'substring' filter based on the edge name.
        required: false
        schema:
          type: string
      - name: sortProperty
        in: query
        description: Property of entity to sort by
        required: false
        schema:
          type: string
          enum:
          - createdTime
          - name
          - type
          - label
          - customerTitle
      - name: sortOrder
        in: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
        required: false
        schema:
          type: string
          enum:
          - ASC
          - DESC
      - name: edgeName
        in: query
        description: Unique name of the edge
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Edge'
                - $ref: '#/components/schemas/PageDataEdge'
  /api/tenant/edgeInfos:
    get:
      tags:
      - edge-controller
      summary: Get Tenant Edge Infos (getTenantEdgeInfos)
      description: "Returns a page of edges info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Edge Info is an extension of the default Edge object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' authority."
      operationId: getTenantEdgeInfos
      parameters:
      - name: pageSize
        in: query
        description: Maximum amount of entities in a one page
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: Sequence number of page starting from 0
        required: true
        schema:
          type: integer
          format: int32
      - name: type
        in: query
        description: A string value representing the edge type. For example, 'default'
        required: false
        schema:
          type: string
      - name: textSearch
        in: query
        description: The case insensitive 'substring' filter based on the edge name.
        required: false
        schema:
          type: string
      - name: sortProperty
        in: query
        description: Property of entity to sort by
        required: false
        schema:
          type: string
          enum:
          - createdTime
          - name
          - type
          - label
          - customerTitle
      - name: sortOrder
        in: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
        required: false
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageDataEdgeInfo'
  /api/edges/enabled:
    get:
      tags:
      - edge-controller
      summary: Is Edges Support Enabled (isEdgesSupportEnabled)
      description: Returns 'true' if edges support enabled on server, 'false' - otherwise.
      operationId: isEdgesSupportEnabled
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: boolean
  /api/edge/{edgeId}:
    get:
      tags:
      - edge-controller
      summary: Get Edge (getEdgeById)
      description: 'Get the Edge object based on the provided Edge Id. If the user has the authority of ''Tenant Administrator'', the server checks that the edge is owned by the same tenant. If the user has the authority of ''Customer User'', the server checks that the edge is assigned to the same customer.


        Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
      operationId: getEdgeById
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
    delete:
      tags:
      - edge-controller
      summary: Delete Edge (deleteEdge)
      description: 'Deletes the edge. Referencing non-existing edge Id will cause an error.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: deleteEdge
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
  /api/edge/{edgeId}/upgrade/available:
    get:
      tags:
      - edge-controller
      summary: Is Edge Upgrade Enabled (isEdgeUpgradeAvailable)
      description: Returns 'true' if upgrade available for connected edge, 'false' - otherwise.
      operationId: isEdgeUpgradeAvailable
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: boolean
  /api/edge/types:
    get:
      tags:
      - edge-controller
      summary: Get Edge Types (getEdgeTypes)
      description: 'Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.


        Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
      operationId: getEdgeTypes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntitySubtype'
  /api/edge/missingToRelatedRuleChains/{edgeId}:
    get:
      tags:
      - edge-controller
      summary: Find Missing Rule Chains (findMissingToRelatedRuleChains)
      description: 'Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: findMissingToRelatedRuleChains
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
  /api/edge/instructions/upgrade/{edgeVersion}/{method}:
    get:
      tags:
      - edge-controller
      summary: Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)
      description: 'Get an upgrade instructions for provided edge version.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: getEdgeUpgradeInstructions
      parameters:
      - name: edgeVersion
        in: path
        description: Edge version
        required: true
        schema:
          type: string
      - name: method
        in: path
        description: Upgrade method ('docker', 'ubuntu' or 'centos')
        required: true
        schema:
          type: string
          enum:
          - docker
          - ubuntu
          - centos
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeInstructions'
  /api/edge/instructions/install/{edgeId}/{method}:
    get:
      tags:
      - edge-controller
      summary: Get Edge Install Instructions (getEdgeInstallInstructions)
      description: 'Get an install instructions for provided edge id.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: getEdgeInstallInstructions
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      - name: method
        in: path
        description: Installation method ('docker', 'ubuntu' or 'centos')
        required: true
        schema:
          type: string
          enum:
          - docker
          - ubuntu
          - centos
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeInstructions'
  /api/edge/info/{edgeId}:
    get:
      tags:
      - edge-controller
      summary: Get Edge Info (getEdgeInfoById)
      description: 'Get the Edge Info object based on the provided Edge Id. If the user has the authority of ''Tenant Administrator'', the server checks that the edge is owned by the same tenant. If the user has the authority of ''Customer User'', the server checks that the edge is assigned to the same customer.


        Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
      operationId: getEdgeInfoById
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeInfo'
  /api/customer/{customerId}/edges:
    get:
      tags:
      - edge-controller
      summary: Get Customer Edges (getCustomerEdges)
      description: "Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority."
      operationId: getCustomerEdges
      parameters:
      - name: customerId
        in: path
        description: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      - name: pageSize
        in: query
        description: Maximum amount of entities in a one page
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: Sequence number of page starting from 0
        required: true
        schema:
          type: integer
          format: int32
      - name: type
        in: query
        description: A string value representing the edge type. For example, 'default'
        required: false
        schema:
          type: string
      - name: textSearch
        in: query
        description: The case insensitive 'substring' filter based on the edge name.
        required: false
        schema:
          type: string
      - name: sortProperty
        in: query
        description: Property of entity to sort by
        required: false
        schema:
          type: string
          enum:
          - createdTime
          - name
          - type
          - label
          - customerTitle
      - name: sortOrder
        in: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
        required: false
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageDataEdge'
  /api/customer/{customerId}/edgeInfos:
    get:
      tags:
      - edge-controller
      summary: Get Customer Edge Infos (getCustomerEdgeInfos)
      description: "Returns a page of edges info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Edge Info is an extension of the default Edge object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority."
      operationId: getCustomerEdgeInfos
      parameters:
      - name: customerId
        in: path
        description: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      - name: pageSize
        in: query
        description: Maximum amount of entities in a one page
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: Sequence number of page starting from 0
        required: true
        schema:
          type: integer
          format: int32
      - name: type
        in: query
        description: A string value representing the edge type. For example, 'default'
        required: false
        schema:
          type: string
      - name: textSearch
        in: query
        description: The case insensitive 'substring' filter based on the edge name.
        required: false
        schema:
          type: string
      - name: sortProperty
        in: query
        description: Property of entity to sort by
        required: false
        schema:
          type: string
          enum:
          - createdTime
          - name
          - type
          - label
          - customerTitle
      - name: sortOrder
        in: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
        required: false
        schema:
          type: string
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageDataEdgeInfo'
  /api/customer/edge/{edgeId}:
    delete:
      tags:
      - edge-controller
      summary: Unassign Edge from Customer (unassignEdgeFromCustomer)
      description: 'Clears assignment of the edge to customer. Customer will not be able to query edge afterwards.


        Available for users with ''TENANT_ADMIN'' authority.'
      operationId: unassignEdgeFromCustomer
      parameters:
      - name: edgeId
        in: path
        description: A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Edge'
components:
  schemas:
    Mapping:
      type: object
      properties:
        columns:
          type: array
          items:
            $ref: '#/components/schemas/ColumnMapping'
        delimiter:
          type: string
        update:
          type: boolean
        header:
          type: boolean
    ColumnMapping:
      type: object
      properties:
        type:
          type: string
          enum:
          - NAME
          - TYPE
          - LABEL
          - SHARED_ATTRIBUTE
          - SERVER_ATTRIBUTE
          - TIMESERIES
          - ACCESS_TOKEN
          - X509
          - MQTT_CLIENT_ID
          - MQTT_USER_NAME
          - MQTT_PASSWORD
          - LWM2M_CLIENT_ENDPOINT
          - LWM2M_CLIENT_SECURITY_CONFIG_MODE
          - LWM2M_CLIENT_IDENTITY
          - LWM2M_CLIENT_KEY
          - LWM2M_CLIENT_CERT
          - LWM2M_BOOTSTRAP_SERVER_SECURITY_MODE
          - LWM2M_BOOTSTRAP_SERVER_PUBLIC_KEY_OR_ID
          - LWM2M_BOOTSTRAP_SERVER_SECRET_KEY
          - LWM2M_SERVER_SECURITY_MODE
          - LWM2M_SERVER_CLIENT_PUBLIC_KEY_OR_ID
          - LWM2M_SERVER_CLIENT_SECRET_KEY
          - SNMP_HOST
          - SNMP_PORT
          - SNMP_VERSION
          - SNMP_COMMUNITY_STRING
          - IS_GATEWAY
          - DESCRIPTION
          - ROUTING_KEY
          - SECRET
        key:
          type: string
    EdgeInstructions:
      type: object
      properties:
        instructions:
          type: string
          description: Markdown with install/upgrade instructions
    BulkImportRequest:
      type: object
      properties:
        file:
          type: string
        mapping:
          $ref: '#/components/schemas/Mapping'
    BulkImportResultEdge:
      type: object
      properties:
        created:
          type: object
          properties:
            opaque:
              type: integer
              format: int32
            acquire:
              type: integer
              format: int32
            release:
              type: integer
              format: int32
              writeOnly: true
            andIncrement:
              type: integer
              format: int32
            andDecrement:
              type: integer
              format: int32
            plain:
              type: integer
              format: int32
        updated:
          type: object
          properties:
            opaque:
              type: integer
              format: int32
            acquire:
              type: integer
              format: int32
            release:
              type: integer
              format: int32
              writeOnly: true
            andIncrement:
              type: integer
              format: int32
            andDecrement:
              type: integer
              format: int32
            plain:
              type: integer
              format: int32
        errors:
          type: object
          properties:
            opaque:
              type: integer
              format: int32
            acquire:
              type: integer
              format: int32
            release:
              type: integer
              format: int32
              writeOnly: true
            andIncrement:
              type: integer
              format: int32
            andDecrement:
              type: integer
              format: int32
            plain:
              type: integer
              format: int32
        errorsList:
          type: array
          items:
            type: string
    TenantId:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID of the entity, time-based UUID v1
          example: 784f394c-42b6-435a-983c-b7beff2784f9
        entityType:
          type: string
          description: string
          enum:
          - TENANT
          example: TENANT
      required:
      - entityType
      - id
    RelationsSearchParameters:
      type: object
      properties:
        rootId:
          type: string
          format: uuid
          description: Root entity id to start search from.
          example: 784f394c-42b6-435a-983c-b7beff2784f9
        rootType:
          type: string
          description: Type of the root entity.
          enum:
          - TENANT
          - CUSTOMER
          - USER
          - DASHBOARD
          - ASSET
          - DEVICE
          - ALARM
          - RULE_CHAIN
          - RULE_NODE
          - ENTITY_VIEW
          - WIDGETS_BUNDLE
          - WIDGET_TYPE
          - TENANT_PROFILE
          - DEVICE_PROFILE
          - ASSET_PROFILE
          - API_USAGE_STATE
          - TB_RESOURCE
          - OTA_PACKAGE
          - EDGE
          - RPC
          - QUEUE
          - NOTIFICATION_TARGET
          - NOTIFICATION_TEMPLATE
          - NOTIFICATION_REQUEST
          - NOTIFICATION
          - NOTIFICATION_RULE
          - QUEUE_STATS
          - OAUTH2_CLIENT
          - DOMAIN
          - MOBILE_APP
          - MOBILE_APP_BUNDLE
          - CALCULATED_FIELD
          - JOB
          - ADMIN_SETTINGS
          - AI_MODEL
          - API_KEY
        direction:
          type: string
          description: Type of the root entity.
          enum:
          - FROM
          - TO
        relationTypeGroup:
          type: string
          description: Type of the relation.
          enum:
          - COMMON
          - DASHBOARD
          - RULE_CHAIN
          - RULE_NODE
          - EDGE
          - EDGE_AUTO_ASSIGN_RULE_CHAIN
        maxLevel:
          type: integer
          format: int32
          description: Maximum level of the search depth.
        fetchLastLevelOnly:
          type: boolean
          description: Fetch entities that match the last level of search. Useful to find Devices that are strictly 'maxLevel' relations away from the root entity.
    EdgeId:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID of the entity, time-based UUID v1
          example: 784f394c-42b6-435a-983c-b7beff2784f9
        entityType:
          type: string
          description: string
          enum:
          - EDGE
          example: EDGE
      required:
      - entityType
      - id
    EntitySubtype:
      type: object
      properties:
        tenantId:
          $ref: '#/components/schemas/TenantId'
        entityType:
          type: string
          enum:
          - TENANT
          - CUSTOMER
          - USER
          - DASHBOARD
          - ASSET
          - DEVICE
          - ALARM
          - RULE_CHAIN
          - RULE_NODE
          - ENTITY_VIEW
          - WIDGETS_BUNDLE
          - WIDGET_TYPE
          - TENANT_PROFILE
          - DEVICE_PROFILE
          - ASSET_PROFILE
          - API_USAGE_STATE
          - TB_RESOURCE
          - OTA_PACKAGE
          - EDGE
          - RPC
          - QUEUE
          - NOTIFICATION_TARGET
          - NOTIFICATION_TEMPLATE
          - NOTIFICATION_REQUEST
          - NOTIFICATION
          - NOTIFICATION_RULE
          -

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/openapi/thingsboard-edge-controller-api-openapi.yml