ThingsBoard component-descriptor-controller API

Component Descriptor

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

OpenAPI Specification

thingsboard-component-descriptor-controller-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: ThingsBoard Admin admin-controller component-descriptor-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: component-descriptor-controller
  description: Component Descriptor
paths:
  /api/components:
    get:
      tags:
      - component-descriptor-controller
      summary: Get Component Descriptors (getComponentDescriptorsByTypes)
      description: 'Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. ''Save Timeseries'' or ''Send Email''.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.


        Available for users with ''SYS_ADMIN'' or ''TENANT_ADMIN'' authority.'
      operationId: getComponentDescriptorsByTypes
      parameters:
      - name: componentTypes
        in: query
        description: List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)
        required: true
        schema:
          type: array
          items:
            type: string
      - name: ruleChainType
        in: query
        description: Type of the Rule Chain
        required: false
        schema:
          type: string
          enum:
          - CORE
          - EDGE
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ComponentDescriptor'
  /api/components/{componentType}:
    get:
      tags:
      - component-descriptor-controller
      summary: Get Component Descriptors (getComponentDescriptorsByType)
      description: 'Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. ''Save Timeseries'' or ''Send Email''.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.


        Available for users with ''SYS_ADMIN'' or ''TENANT_ADMIN'' authority.'
      operationId: getComponentDescriptorsByType
      parameters:
      - name: componentType
        in: path
        description: Type of the Rule Node
        required: true
        schema:
          type: string
          enum:
          - ENRICHMENT
          - FILTER
          - TRANSFORMATION
          - ACTION
          - EXTERNAL
      - name: ruleChainType
        in: query
        description: Type of the Rule Chain
        required: false
        schema:
          type: string
          enum:
          - CORE
          - EDGE
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ComponentDescriptor'
  /api/component/{componentDescriptorClazz}:
    get:
      tags:
      - component-descriptor-controller
      summary: Get Component Descriptor (getComponentDescriptorByClazz)
      description: 'Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. ''Save Timeseries'' or ''Send Email''.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.


        Available for users with ''SYS_ADMIN'' or ''TENANT_ADMIN'' authority.'
      operationId: getComponentDescriptorByClazz
      parameters:
      - name: componentDescriptorClazz
        in: path
        description: Component Descriptor class name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentDescriptor'
components:
  schemas:
    JsonNode:
      description: A value representing the any type (object or primitive)
      examples:
      - {}
    ComponentDescriptorId:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: string
          example: 784f394c-42b6-435a-983c-b7beff2784f9
      required:
      - id
    ComponentDescriptor:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/ComponentDescriptorId'
          description: JSON object with the descriptor Id. Specify existing descriptor id to update the descriptor. Referencing non-existing descriptor Id will cause error. Omit this field to create new descriptor.
        createdTime:
          type: integer
          format: int64
          description: Timestamp of the descriptor creation, in milliseconds
          example: 1609459200000
          readOnly: true
        type:
          type: string
          description: Type of the Rule Node
          enum:
          - ENRICHMENT
          - FILTER
          - TRANSFORMATION
          - ACTION
          - EXTERNAL
          - FLOW
          readOnly: true
        scope:
          type: string
          description: Scope of the Rule Node. Always set to 'TENANT', since no rule chains on the 'SYSTEM' level yet.
          enum:
          - TENANT
          example: TENANT
          readOnly: true
        clusteringMode:
          type: string
          description: Clustering mode of the RuleNode. This mode represents the ability to start Rule Node in multiple microservices.
          enum:
          - USER_PREFERENCE
          - ENABLED
          - SINGLETON
          example: ENABLED
          readOnly: true
        name:
          type: string
          description: Name of the Rule Node. Taken from the @RuleNode annotation.
          example: Custom Rule Node
          readOnly: true
        clazz:
          type: string
          description: Full name of the Java class that implements the Rule Engine Node interface.
          example: com.mycompany.CustomRuleNode
          readOnly: true
        configurationVersion:
          type: integer
          format: int32
          description: Rule node configuration version. By default, this value is 0. If the rule node is a versioned node, this value might be greater than 0.
          readOnly: true
        actions:
          type: string
          description: Rule Node Actions. Deprecated. Always null.
          readOnly: true
        hasQueueName:
          type: boolean
          description: Indicates that the RuleNode supports queue name configuration.
          example: true
          readOnly: true
        configurationDescriptor:
          $ref: '#/components/schemas/JsonNode'
  securitySchemes:
    HTTP login form:
      type: http
      description: Enter Username / Password
      scheme: loginPassword
      bearerFormat: /api/auth/login|X-Authorization
    API key form:
      type: apiKey
      description: 'Enter the API key value with ''ApiKey'' prefix in format: **ApiKey <your_api_key_value>**


        Example: **ApiKey tb_5te51SkLRYpjGrujUGwqkjFvooWBlQpVe2An2Dr3w13wjfxDW**


        <br>**NOTE**: Use only ONE authentication method at a time. If both are authorized, JWT auth takes the priority.<br>

        '
      name: X-Authorization
      in: header