# ThingsBoard ThingsBoard Tenants and Customers API
# Source: https://demo.thingsboard.io/v3/api-docs (Apache 2.0)
openapi: 3.1.0
info:
title: ThingsBoard Tenants and Customers API
description: "ThingsBoard Tenants and Customers API \u2014 subset of the ThingsBoard REST API (open-source IoT platform). Covers: Tenant, Tenant Profile, Customer, User."
version: 4.3.0.3DEMO
contact:
name: ThingsBoard team
url: https://thingsboard.io
email: [email protected]
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: tenant-controller
description: Tenant
- name: tenant-profile-controller
description: Tenant Profile
- name: customer-controller
description: Customer
- name: user-controller
description: User
paths:
/api/user/settings:
get:
tags:
- user-controller
summary: Get User Settings (getUserSettings)
description: 'Fetch the User settings based on authorized user. '
operationId: getUserSettings
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
put:
tags:
- user-controller
summary: Update User Settings (saveUserSettings)
description: '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}'
operationId: putUserSettings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
required: true
responses:
'200':
description: OK
post:
tags:
- user-controller
summary: Save User Settings (saveUserSettings)
description: 'Save user settings represented in json format for authorized user. '
operationId: saveUserSettings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
/api/user/settings/{type}:
get:
tags:
- user-controller
summary: Get User Settings (getUserSettings)
description: 'Fetch the User settings based on authorized user. '
operationId: getUserSettings_1
parameters:
- name: type
in: path
description: 'Settings type, case insensitive, one of: "general", "quick_links", "doc_links" or "dashboards".'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
put:
tags:
- user-controller
summary: Update User Settings (saveUserSettings)
description: '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}'
operationId: putUserSettings_1
parameters:
- name: type
in: path
description: 'Settings type, case insensitive, one of: "general", "quick_links", "doc_links" or "dashboards".'
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JsonNode'
required: true
responses:
'200':
description: OK
/api/user:
post:
tags:
- user-controller
summary: Save or Update User (saveUser)
description: '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 (below) to create new User entity.
Available for users with ''SYS_ADMIN'', ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.'
operationId: saveUser
parameters:
- name: sendActivationMail
in: query
description: Send activation email (or use activation link)
required: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
/api/user/{userId}/userCredentialsEnabled:
post:
tags:
- user-controller
summary: Enable/Disable User Credentials (setUserCredentialsEnabled)
description: "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."
operationId: setUserCredentialsEnabled
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
- name: userCredentialsEnabled
in: query
description: Enable ("true") or disable ("false") the credentials.
required: false
schema:
type: string
responses:
'200':
description: OK
/api/user/sendActivationMail:
post:
tags:
- user-controller
summary: Send or Re-send the Activation Email
description: "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."
operationId: sendActivationEmail
parameters:
- name: email
in: query
description: Email of the user
required: true
schema:
type: string
responses:
'200':
description: OK
/api/user/mobile/session:
get:
tags:
- user-controller
operationId: getMobileSession
parameters:
- name: X-Mobile-Token
in: header
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MobileSessionInfo'
post:
tags:
- user-controller
operationId: saveMobileSession
parameters:
- name: X-Mobile-Token
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MobileSessionInfo'
required: true
responses:
'200':
description: OK
delete:
tags:
- user-controller
operationId: removeMobileSession
parameters:
- name: X-Mobile-Token
in: header
required: true
schema:
type: string
responses:
'200':
description: OK
/api/tenant:
post:
tags:
- tenant-controller
summary: Create or Update Tenant (saveTenant)
description: '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 the request body example (below) to create new Tenant entity.
Available for users with ''SYS_ADMIN'' authority.'
operationId: saveTenant
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Tenant'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Tenant'
/api/tenantProfile:
post:
tags:
- tenant-profile-controller
summary: Create or Update Tenant Profile (saveTenantProfile)
description: "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 recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile\
\ that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number\
\ of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to\
\ 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n \"name\": \"Your name\",\n \"description\": \"Your description\"\
,\n \"isolatedTbRuleEngine\": false,\n \"profileData\": {\n \"configuration\": {\n \"type\": \"DEFAULT\",\n \"maxDevices\": 0,\n \"maxAssets\": 0,\n \"maxCustomers\": 0,\n\
\ \"maxUsers\": 0,\n \"maxDashboards\": 0,\n \"maxRuleChains\": 0,\n \"maxResourcesInBytes\": 0,\n \"maxOtaPackagesInBytes\": 0,\n \"maxResourceSize\": 0,\n \"\
transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\"\
,\n \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\"\
,\n \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\"\
,\n \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n \"transportGatewayDeviceTelemetryDataPointsRateLimit\"\
: \"20:1,600:60\",\n \"maxTransportMessages\": 10000000,\n \"maxTransportDataPoints\": 10000000,\n \"maxREExecutions\": 4000000,\n \"maxJSExecutions\": 5000000,\n \"maxDPStorageDays\"\
: 0,\n \"maxRuleNodeExecutionsPerMessage\": 50,\n \"maxDebugModeDurationMinutes\": 15,\n \"maxEmails\": 0,\n \"maxSms\": 0,\n \"maxCreatedAlarms\": 1000,\n \"defaultStorageTtlDays\"\
: 0,\n \"alarmsTtlDays\": 0,\n \"rpcTtlDays\": 0,\n \"queueStatsTtlDays\": 0,\n \"ruleEngineExceptionsTtlDays\": 0,\n \"warnThreshold\": 0,\n \"maxCalculatedFieldsPerEntity\"\
: 5,\n \"maxArgumentsPerCF\": 10,\n \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n \"maxRelationLevelPerCfArgument\": 2,\n \"maxRelatedEntitiesToReturnPerCfArgument\"\
: 100,\n \"maxDataPointsPerRollingArg\": 1000,\n \"maxStateSizeInKBytes\": 32,\n \"maxSingleValueArgumentSizeInKBytes\": 2, \"minAllowedDeduplicationIntervalInSecForCF\": 10,\
\ \"minAllowedAggregationIntervalInSecForCF\": 60, \"intermediateAggregationIntervalInSecForCF\": 300, \"cfReevaluationCheckInterval\": 60, \"alarmsReevaluationInterval\": 60\
\ }\n },\n \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority."
operationId: saveTenantProfile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TenantProfile'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TenantProfile'
/api/tenantProfile/{tenantProfileId}/default:
post:
tags:
- tenant-profile-controller
summary: Make Tenant Profile Default (setDefaultTenantProfile)
description: "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."
operationId: setDefaultTenantProfile
parameters:
- name: tenantProfileId
in: path
description: A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TenantProfile'
/api/customer:
post:
tags:
- customer-controller
summary: Create or Update Customer (saveCustomer)
description: "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 users with 'TENANT_ADMIN' authority."
operationId: saveCustomer
parameters:
- name: nameConflictPolicy
in: 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.'
required: false
schema:
type: string
default: FAIL
enum:
- FAIL
- UNIQUIFY
- name: uniquifySeparator
in: 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'.
required: false
schema:
type: string
default: _
- name: uniquifyStrategy
in: 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.'
required: false
schema:
type: string
default: RANDOM
enum:
- RANDOM
- INCREMENTAL
requestBody:
description: A JSON value representing the customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
/api/users:
get:
tags:
- user-controller
summary: Get Users (getUsers)
description: "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."
operationId: getUsersByIds
parameters:
- name: userIds
in: query
description: A list of user ids, separated by comma ','
required: true
schema:
type: array
items:
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: textSearch
in: query
description: The case insensitive 'substring' filter based on the user email.
required: false
schema:
type: string
- name: sortProperty
in: query
description: Property of entity to sort by
required: false
schema:
type: string
enum:
- createdTime
- firstName
- lastName
- email
- 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:
oneOf:
- $ref: '#/components/schemas/PageDataUser'
- type: array
items:
$ref: '#/components/schemas/User'
/api/users/info:
get:
tags:
- user-controller
summary: Find Users by Query (findUsersByQuery)
description: "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."
operationId: findUsersByQuery
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 user email.
required: false
schema:
type: string
- name: sortProperty
in: query
description: Property of entity to sort by
required: false
schema:
type: string
enum:
- createdTime
- firstName
- lastName
- email
- 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/PageDataUserEmailInfo'
/api/users/assign/{alarmId}:
get:
tags:
- user-controller
summary: Get UsersForAssign (getUsersForAssign)
description: "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."
operationId: getUsersForAssign
parameters:
- name: alarmId
in: path
description: A string value representing the alarm 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: textSearch
in: query
description: The case insensitive 'substring' filter based on the user email.
required: false
schema:
type: string
- name: sortProperty
in: query
description: Property of entity to sort by
required: false
schema:
type: string
enum:
- createdTime
- firstName
- lastName
- email
- 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/PageDataUserEmailInfo'
/api/user/{userId}:
get:
tags:
- user-controller
summary: Get User (getUserById)
description: 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.
operationId: getUserById
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
delete:
tags:
- user-controller
summary: Delete User (deleteUser)
description: "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."
operationId: deleteUser
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
/api/user/{userId}/token:
get:
tags:
- user-controller
summary: Get User Token (getUserToken)
description: '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. '
operationId: getUserToken
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JwtPair'
/api/user/{userId}/activationLink:
get:
tags:
- user-controller
summary: Get Activation Link (getActivationLink)
description: "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."
operationId: getActivationLink
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
/api/user/{userId}/activationLinkInfo:
get:
tags:
- user-controller
summary: Get Activation Link Info (getActivationLinkInfo)
description: "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."
operationId: getActivationLinkInfo
parameters:
- name: userId
in: path
description: A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserActivationLink'
/api/user/tokenAccessEnabled:
get:
tags:
- user-controller
summary: Check Token Access Enabled (isUserTokenAccessEnabled)
description: '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. '
operationId: isUserTokenAccessEnabled
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
/api/user/dashboards:
get:
tags:
- user-controller
summary: Get Information About Last Visited and Starred Dashboards (getLastVisitedDashboards)
description: '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.'
operationId: getUserDashboardsInfo
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserDashboardsInfo'
/api/user/dashboards/{dashboardId}/{action}:
get:
tags:
- user-controller
summary: Report Action of User Over the Dashboard (reportUserDashboardAction)
description: "Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority."
operationId: reportUserDashboardAction
parameters:
- name: dashboardId
in: path
description: A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'
required: true
schema:
type: string
- name: action
in: path
description: 'Dashboard action, one of: "visit", "star" or "unstar".'
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserDashboardsInfo'
/api/tenants:
get:
tags:
- tenant-controller
summary: Get Tenants (getTenants)
description: "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."
operationId: getTenantsByIds
parameters:
- name: tenantIds
in: query
description: A list of tenant ids, separated by comma ','
required: true
schema:
type: array
items:
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: textSearch
in: query
description: The case insensitive 'substring' filter based on the tenant name.
required: false
schema:
type: string
- name: sortProperty
in: query
description: Property of entity to sort by
required: false
schema:
type: string
enum:
- createdTime
- title
- email
- country
- state
- city
- address
- address2
- zip
- phone
- email
- 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:
oneOf:
- $ref: '#/components/schemas/PageDataTenant'
- type: array
items:
$ref: '#/components/schemas/Tenant'
/api/tenantProfiles:
get:
tags:
- tenant-profile-controller
summary: Get Tenant Profiles (getTenantProfiles)
description: "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\nAva
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thingsboard/refs/heads/main/openapi/thingsboard-tenants-openapi.yml