ThingsBoard website screenshot

ThingsBoard

ThingsBoard is an open-source IoT platform for device connectivity, data collection, processing, and visualization. Licensed under Apache 2.0 and developed by ThingsBoard Inc., it supports multi-tenant device management, telemetry over MQTT/HTTP/CoAP/LwM2M/SNMP, a drag-and-drop rule engine, calculated fields, 600+ customizable dashboard widgets, alarms, RPC, OTA firmware updates, edge computing, mobile apps, and a distributed MQTT broker (TBMQ). Available as Community Edition (free, self-hosted), Professional Edition (self-hosted subscription), and ThingsBoard Cloud (managed PaaS).

15 APIs 20 Features
IoTInternet of ThingsDevice ManagementTelemetryOpen SourceApache 2.0MQTTLwM2MCoAPRule EngineDashboardsEdgeMulti-tenantJavaSpring

APIs

ThingsBoard Devices API

Provision, list, retrieve, update, assign, and delete IoT devices and device profiles. Includes device connectivity helpers and OTA package management for over-the-air firmware ...

ThingsBoard Assets API

Logical/physical asset modelling with profiles, entity views, and typed entity relations for hierarchical IoT solutions (Buildings, Floors, Rooms, Machines). 41 endpoints.

ThingsBoard Telemetry API

Read and write device/asset time-series telemetry and key/value attributes (CLIENT/SERVER/SHARED scopes), run entity queries, and manage calculated fields. 26 endpoints.

ThingsBoard Alarms API

Manage IoT alarms — list, acknowledge, clear, assign, and comment. Includes alarm queries and the alarm-comment thread. 15 endpoints.

ThingsBoard Rule Engine API

Manage Rule Chains, Rule Nodes, and component descriptors that power ThingsBoard's drag-and-drop data-processing engine. 26 endpoints.

ThingsBoard RPC API

One-way and two-way Remote Procedure Calls from server to device, with persistent RPC support (RPC v2). 6 endpoints.

ThingsBoard Dashboards API

Create and manage dashboards, widget bundles, widget types, image resources, and tenant resources that drive the ThingsBoard UI. Includes SCADA dashboards. 57 endpoints.

ThingsBoard Authentication API

Login (JWT), refresh tokens, sign-up, API key management (since 4.3), 2FA, OAuth2 federation, and custom domain configuration. 46 endpoints.

ThingsBoard Tenants and Customers API

Manage tenants, tenant profiles, customers, and users — the multi-tenancy backbone of ThingsBoard. 38 endpoints.

ThingsBoard Admin API

System-administrator endpoints — admin settings, audit logs, events, usage info, queues and queue stats, mail-config templates, QR-code settings, and background jobs. 42 endpoints.

ThingsBoard Notifications API

Manage notification requests, rules, templates, and targets across email, SMS, Slack, MS Teams, mobile push, and web delivery channels. 24 endpoints.

ThingsBoard Edge API

Manage ThingsBoard Edge instances — provisioning, synchronization, event tracking, and entity version control between edge and cloud. 32 endpoints.

ThingsBoard Mobile App API

Manage mobile app configurations and mobile-app bundles used by the ThingsBoard mobile applications (Flutter). 9 endpoints.

ThingsBoard LwM2M API

LwM2M (Lightweight M2M) device-management endpoints for low-power devices over CoAP/DTLS. 2 endpoints.

ThingsBoard AI API

AI model management and Trendz Analytics integration for forecasting, anomaly detection, and predictive-maintenance workflows over IoT telemetry. 4 endpoints.

Collections

Pricing Plans

Thingsboard Plans Pricing

15 plans

PLANS

Rate Limits

Thingsboard Rate Limits

0 limits

RATE LIMITS

FinOps

Features

Open-source (Apache 2.0) IoT platform written in Java/Spring with a TypeScript/Angular UI
409 REST endpoints across 59 controllers exposed via OpenAPI 3.1 (live spec at /v3/api-docs)
Device, asset, customer, tenant, and user management with multi-tenant isolation
Device connectivity over MQTT, HTTP, CoAP, LwM2M, and SNMP
Time-series telemetry storage with PostgreSQL, Cassandra, or TimescaleDB backends
Calculated fields — simple, script-based (TBEL), geofencing, and aggregation
Rule engine with drag-and-drop rule chains and rule nodes
600+ customizable widgets, SCADA dashboards, and white-labelling
Alarm management with severity, status, acknowledgement, assignment, and comments
Remote Procedure Calls (one-way, two-way, and persistent v2)
OTA package delivery for firmware/software updates
Edge computing with the ThingsBoard Edge sidecar and bidirectional sync
TBMQ distributed MQTT broker (100M+ connections, 10M msg/sec)
IoT Gateway with adapters for Modbus, OPC-UA, BLE, BACnet, CAN, ODBC, REST, MQTT
Notification center with email, SMS, Slack, MS Teams, mobile push, and web delivery
JWT and API-key (4.3+) authentication, OAuth2 federation, two-factor auth
Mobile applications for Android and iOS built with Flutter
Trendz Analytics for forecasting and predictive maintenance (PE)
Java and Python REST client SDKs
Horizontal scalability via microservices architecture and Kafka/RabbitMQ queues

Semantic Vocabularies

Thingsboard Context

24 classes · 16 properties

JSON-LD

API Governance Rules

ThingsBoard API Rules

6 rules · 2 errors 4 warnings

SPECTRAL

Example Payloads

Thingsboard Login Example

4 fields

EXAMPLE

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
🔗
Documentation
Documentation
🔗
OpenAPI
OpenAPI
🔗
Documentation
Documentation
💰
Pricing
Pricing
🌐
Portal
Portal
🌐
Portal
Portal
🌐
Portal
Portal
🌐
Portal
Portal
🌐
Portal
Portal
🌐
Portal
Portal
🌐
Portal
Portal
📰
Blog
Blog
📄
ReleasePolicy
ReleasePolicy
📄
ChangeLog
ChangeLog
📝
Signup
Signup
🔗
Sandbox
Sandbox
💬
Support
Support
👥
GitHubOrganization
GitHubOrganization
💻
SourceCode
SourceCode
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
📦
SDKs
SDKs
📦
SDKs
SDKs
🔧
Tools
Tools
🔧
Tools
Tools
📦
SDKs
SDKs
🔧
Tools
Tools
🔗
Forums
Forums
🔗
License
License
🔗
License
License
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
Vocabulary
Vocabulary
🔗
SpectralRules
SpectralRules
🔗
JSONLD
JSONLD

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: ThingsBoard Tenants and Customers API
  version: 4.3.0.3DEMO
items:
- info:
    name: user-controller
    type: folder
  items:
  - info:
      name: Get User Settings (getUserSettings)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/settings
    docs: 'Fetch the User settings based on authorized user. '
  - info:
      name: Save User Settings (saveUserSettings)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/user/settings
      body:
        type: json
        data: '{}'
    docs: 'Save user settings represented in json format for authorized user. '
  - info:
      name: Update User Settings (saveUserSettings)
      type: http
    http:
      method: PUT
      url: https://demo.thingsboard.io/api/user/settings
      body:
        type: json
        data: '{}'
    docs: 'Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings:
      {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved
      by putting {B.D:30}'
  - info:
      name: Get User Settings (getUserSettings)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/settings/:type
      params:
      - name: type
        value: ''
        type: path
        description: 'Settings type, case insensitive, one of: "general", "quick_links", "doc_links" or "dashboards".'
    docs: 'Fetch the User settings based on authorized user. '
  - info:
      name: Update User Settings (saveUserSettings)
      type: http
    http:
      method: PUT
      url: https://demo.thingsboard.io/api/user/settings/:type
      params:
      - name: type
        value: ''
        type: path
        description: 'Settings type, case insensitive, one of: "general", "quick_links", "doc_links" or "dashboards".'
      body:
        type: json
        data: '{}'
    docs: 'Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings:
      {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved
      by putting {B.D:30}'
  - info:
      name: Save or Update User (saveUser)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/user
      params:
      - name: sendActivationMail
        value: ''
        type: query
        description: Send activation email (or use activation link)
      body:
        type: json
        data: '{}'
    docs: 'Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).
      The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing
      non-existing User Id will cause ''Not Found'' error.


      Device email is unique for entire platform setup.Remove ''id'', ''tenantId'' and optionally ''customerId'' from the
      request body example (bel'
  - info:
      name: Enable/Disable User Credentials (setUserCredentialsEnabled)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/user/:userId/userCredentialsEnabled
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
      - name: userCredentialsEnabled
        value: ''
        type: query
        description: Enable ("true") or disable ("false") the credentials.
    docs: "Enables or Disables user credentials. Useful when you would like to block user account without deleting it. 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'\
      \ authority."
  - info:
      name: Send or Re-send the Activation Email
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/user/sendActivationMail
      params:
      - name: email
        value: ''
        type: query
        description: Email of the user
    docs: "Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it. \n\
      \nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority."
  - info:
      name: getMobileSession
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/mobile/session
      headers:
      - name: X-Mobile-Token
        value: ''
  - info:
      name: saveMobileSession
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/user/mobile/session
      headers:
      - name: X-Mobile-Token
        value: ''
      body:
        type: json
        data: '{}'
  - info:
      name: removeMobileSession
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/user/mobile/session
      headers:
      - name: X-Mobile-Token
        value: ''
  - info:
      name: Get Users (getUsers)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/users
      params:
      - name: userIds
        value: ''
        type: query
        description: A list of user ids, separated by comma ','
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the user email.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of users owned by tenant or customer. The scope depends on authority of the user that performs the\
      \ request.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."
  - info:
      name: Find Users by Query (findUsersByQuery)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/users/info
      params:
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the user email.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns page of user data objects. Search is been executed by email, firstName and lastName fields. 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."
  - info:
      name: Get UsersForAssign (getUsersForAssign)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/users/assign/:alarmId
      params:
      - name: alarmId
        value: ''
        type: path
        description: A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the user email.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName\
      \ and lastName fields. 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."
  - info:
      name: Get User (getUserById)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/:userId
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does
      not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested
      user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested
      user is owned by the same customer.
  - info:
      name: Delete User (deleteUser)
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/user/:userId
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User\
      \ Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority."
  - info:
      name: Get User Token (getUserToken)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/:userId/token
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: 'Returns the token of the User based on the provided User Id. If the user who performs the request has the authority
      of ''SYS_ADMIN'', it is possible to get the token of any tenant administrator. If the user who performs the request
      has the authority of ''TENANT_ADMIN'', it is possible to get the token of any customer user that belongs to the same
      tenant. '
  - info:
      name: Get Activation Link (getActivationLink)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/:userId/activationLink
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Get the activation link for the user. The base url for activation link is configurable in the general settings\
      \ of system administrator. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority."
  - info:
      name: Get Activation Link Info (getActivationLinkInfo)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/:userId/activationLinkInfo
      params:
      - name: userId
        value: ''
        type: path
        description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Get the activation link info for the user. The base url for activation link is configurable in the general settings\
      \ of system administrator. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority."
  - info:
      name: Check Token Access Enabled (isUserTokenAccessEnabled)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/tokenAccessEnabled
    docs: 'Checks that the system is configured to allow administrators to impersonate themself as other users. If the user
      who performs the request has the authority of ''SYS_ADMIN'', it is possible to login as any tenant administrator. If
      the user who performs the request has the authority of ''TENANT_ADMIN'', it is possible to login as any customer user. '
  - info:
      name: Get Information About Last Visited and Starred Dashboards (getLastVisitedDashboards)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/dashboards
    docs: 'Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.


      Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
  - info:
      name: Report Action of User Over the Dashboard (reportUserDashboardAction)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/user/dashboards/:dashboardId/:action
      params:
      - name: dashboardId
        value: ''
        type: path
        description: A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
      - name: action
        value: ''
        type: path
        description: 'Dashboard action, one of: "visit", "star" or "unstar".'
    docs: "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority."
  - info:
      name: Get Tenant Users (getTenantAdmins)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenant/:tenantId/users
      params:
      - name: tenantId
        value: ''
        type: path
        description: A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the user email.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of users 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.\
      \ \n\nAvailable for users with 'SYS_ADMIN' authority."
  - info:
      name: Get Customer Users (getCustomerUsers)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/customer/:customerId/users
      params:
      - name: customerId
        value: ''
        type: path
        description: A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the user email.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of users owned by 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' authority."
  - info:
      name: Delete User Settings (deleteUserSettings)
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/user/settings/:type/:paths
      params:
      - name: paths
        value: ''
        type: path
        description: paths
      - name: type
        value: ''
        type: path
        description: 'Settings type, case insensitive, one of: "general", "quick_links", "doc_links" or "dashboards".'
    docs: "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\"\
      : {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter"
  - info:
      name: Delete User Settings (deleteUserSettings)
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/user/settings/:paths
      params:
      - name: paths
        value: ''
        type: path
        description: paths
    docs: "Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\"\
      : {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter"
- info:
    name: tenant-controller
    type: folder
  items:
  - info:
      name: Create or Update Tenant (saveTenant)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/tenant
      body:
        type: json
        data: '{}'
    docs: Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).
      Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant
      Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant
      Id will cause 'Not Found' error.Remove 'id', 'tenantId' from t
  - info:
      name: Get Tenants (getTenants)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenants
      params:
      - name: tenantIds
        value: ''
        type: query
        description: A list of tenant ids, separated by comma ','
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the tenant name.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of tenants registered in the platform. 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 'SYS_ADMIN' authority."
  - info:
      name: Get Tenants Info (getTenants)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantInfos
      params:
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the tenant name.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant\
      \ object and includes Tenant Profile name. 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 'SYS_ADMIN' authority."
  - info:
      name: Get Tenant (getTenantById)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenant/:tenantId
      params:
      - name: tenantId
        value: ''
        type: path
        description: A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN'\
      \ authority."
  - info:
      name: Delete Tenant (deleteTenant)
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/tenant/:tenantId
      params:
      - name: tenantId
        value: ''
        type: path
        description: A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: 'Deletes the tenant, it''s customers, rule chains, devices and all other related entities. Referencing non-existing
      tenant Id will cause an error.


      Available for users with ''SYS_ADMIN'' or ''TENANT_ADMIN'' authority.'
  - info:
      name: Get Tenant Info (getTenantInfoById)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenant/info/:tenantId
      params:
      - name: tenantId
        value: ''
        type: path
        description: A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object\
      \ and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority."
- info:
    name: tenant-profile-controller
    type: folder
  items:
  - info:
      name: Create or Update Tenant Profile (saveTenantProfile)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/tenantProfile
      body:
        type: json
        data: '{}'
    docs: "Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based\
      \ UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly\
      \ created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant\
      \ Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile\
      \ configuration will cause immediate"
  - info:
      name: Make Tenant Profile Default (setDefaultTenantProfile)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/tenantProfile/:tenantProfileId/default
      params:
      - name: tenantProfileId
        value: ''
        type: path
        description: A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\
      \nAvailable for users with 'SYS_ADMIN' authority."
  - info:
      name: Get Tenant Profiles (getTenantProfiles)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantProfiles
      params:
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the tenant profile name.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
      - name: ids
        value: ''
        type: query
        description: Comma-separated list of tenant profile ids
    docs: "Returns a page of tenant profiles registered in the platform. 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 'SYS_ADMIN' authority."
  - info:
      name: Get Tenant Profiles Info (getTenantProfileInfos)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantProfileInfos
      params:
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the tenant profile name.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
    docs: "Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight\
      \ object that contains only id and name of the profile. 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 'SYS_ADMIN' authority."
  - info:
      name: Get Tenant Profile Info (getTenantProfileInfoById)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantProfileInfo/:tenantProfileId
      params:
      - name: tenantProfileId
        value: ''
        type: path
        description: A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight\
      \ object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority."
  - info:
      name: Get Default Tenant Profile Info (getDefaultTenantProfileInfo)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantProfileInfo/default
    docs: "Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only\
      \ id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority."
  - info:
      name: Get Tenant Profile (getTenantProfileById)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenantProfile/:tenantProfileId
      params:
      - name: tenantProfileId
        value: ''
        type: path
        description: A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN'\
      \ authority."
  - info:
      name: Delete Tenant Profile (deleteTenantProfile)
      type: http
    http:
      method: DELETE
      url: https://demo.thingsboard.io/api/tenantProfile/:tenantProfileId
      params:
      - name: tenantProfileId
        value: ''
        type: path
        description: A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
    docs: "Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile\
      \ that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority."
- info:
    name: customer-controller
    type: folder
  items:
  - info:
      name: Create or Update Customer (saveCustomer)
      type: http
    http:
      method: POST
      url: https://demo.thingsboard.io/api/customer
      params:
      - name: nameConflictPolicy
        value: ''
        type: query
        description: 'Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY.  If omitted, FAIL policy
          is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists.  UNIQUIFY
          policy appends a suffix to the entity name, if a name conflict occurs.'
      - name: uniquifySeparator
        value: ''
        type: query
        description: Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is
          used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name',
          created entity will have name like 'test-name-7fsh4f'.
      - name: uniquifyStrategy
        value: ''
        type: query
        description: 'Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL.
          By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity
          name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example,
          strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name ''test-name'',
          created entity will have name like ''test-name-1.'
      body:
        type: json
        data: '{}'
    docs: "Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).\
      \ The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer.\
      \ Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example\
      \ (below) to create new Customer entity. \n\nAvailable for "
  - info:
      name: Get Tenant Customer by Customer Title (getTenantCustomer)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/tenant/customers
      params:
      - name: customerTitle
        value: ''
        type: query
        description: A string value representing the Customer title.
    docs: "Get the Customer using Customer Title. \n\nAvailable for users with 'TENANT_ADMIN' authority."
  - info:
      name: Get Customers by Customer Ids (getCustomersByIds)
      type: http
    http:
      method: GET
      url: https://demo.thingsboard.io/api/customers
      params:
      - name: pageSize
        value: ''
        type: query
        description: Maximum amount of entities in a one page
      - name: page
        value: ''
        type: query
        description: Sequence number of page starting from 0
      - name: textSearch
        value: ''
        type: query
        description: The case insensitive 'substring' filter based on the customer title.
      - name: sortProperty
        value: ''
        type: query
        description: Property of entity to sort by
      - name: sortOrder
        value: ''
        type: query
        description: Sort order. ASC (ASCENDING) or DESC (DESCENDING)
      - name: customerIds
        value: ''
        type: query
        description: A list of customer ids, separated by comma ','
    do

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