# ThingsBoard ThingsBoard Devices API # Source: https://demo.thingsboard.io/v3/api-docs (Apache 2.0) openapi: 3.1.0 info: title: ThingsBoard Devices API description: "ThingsBoard Devices API \u2014 subset of the ThingsBoard REST API (open-source IoT platform). Covers: Device, Device Profile, Device Connectivity, Ota Package." 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: device-controller description: Device - name: device-profile-controller description: Device Profile - name: device-connectivity-controller description: Device Connectivity - name: ota-package-controller description: Ota Package paths: /api/tenant/{tenantId}/device/{deviceId}: post: tags: - device-controller summary: Assign Device to Tenant (assignDeviceToTenant) description: 'Creates assignment of the device to tenant. Thereafter tenant will be able to reassign the device to a customer. Available for users with ''TENANT_ADMIN'' authority.' operationId: assignDeviceToTenant parameters: - name: tenantId in: path description: A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/otaPackage: post: tags: - ota-package-controller summary: Create or Update OTA Package Info (saveOtaPackageInfo) description: "Create or update the OTA Package Info. When creating OTA Package Info, platform generates OTA Package id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).\ \ The newly created OTA Package id will be present in the response. Specify existing OTA Package id to update the OTA Package Info. Referencing non-existing OTA Package Id will cause 'Not Found'\ \ error. \n\nOTA Package combination of the title with the version is unique in the scope of tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: saveOtaPackageInfo requestBody: content: application/json: schema: $ref: '#/components/schemas/SaveOtaPackageInfoRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OtaPackageInfo' /api/otaPackage/{otaPackageId}: get: tags: - ota-package-controller summary: Get OTA Package (getOtaPackageById) description: "Fetch the OTA Package object based on the provided OTA Package Id. The server checks that the OTA Package is owned by the same tenant. OTA Package is a heavyweight object that includes\ \ main information about the OTA Package and also data. \n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: getOtaPackageById parameters: - name: otaPackageId in: path description: A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OtaPackage' post: tags: - ota-package-controller summary: Save OTA Package Data (saveOtaPackageData) description: 'Update the OTA Package. Adds the date to the existing OTA Package Info Available for users with ''TENANT_ADMIN'' authority.' operationId: saveOtaPackageData parameters: - name: otaPackageId in: path description: A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string - name: checksum in: query description: OTA Package checksum. For example, '0xd87f7e0c' required: false schema: type: string - name: checksumAlgorithm in: query description: OTA Package checksum algorithm. required: true schema: type: string enum: - MD5 - SHA256 - SHA384 - SHA512 - CRC32 - MURMUR3_32 - MURMUR3_128 requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: OTA Package data. required: - file responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OtaPackageInfo' delete: tags: - ota-package-controller summary: Delete OTA Package (deleteOtaPackage) description: 'Deletes the OTA Package. Referencing non-existing OTA Package Id will cause an error. Can''t delete the OTA Package if it is referenced by existing devices or device profile. Available for users with ''TENANT_ADMIN'' authority.' operationId: deleteOtaPackage parameters: - name: otaPackageId in: path description: A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK /api/edge/{edgeId}/device/{deviceId}: post: tags: - device-controller summary: Assign Device to Edge (assignDeviceToEdge) description: 'Creates assignment of an existing device to an instance of The Edge. Assignment works in async way - first, notification event pushed to edge service queue on platform. Second, remote edge service will receive a copy of assignment device (Edge will receive this instantly, if it''s currently connected, or once it''s going to be connected to platform). Third, once device will be delivered to edge service, it''s going to be available for usage on remote edge instance. Available for users with ''TENANT_ADMIN'' authority.' operationId: assignDeviceToEdge 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: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' delete: tags: - device-controller summary: Unassign Device from Edge (unassignDeviceFromEdge) description: 'Clears assignment of the device to the edge. Unassignment works in async way - first, ''unassign'' notification event pushed to edge queue on platform. Second, remote edge service will receive an ''unassign'' command to remove device (Edge will receive this instantly, if it''s currently connected, or once it''s going to be connected to platform). Third, once ''unassign'' command will be delivered to edge service, it''s going to remove device locally. Available for users with ''TENANT_ADMIN'' authority.' operationId: unassignDeviceFromEdge 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: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/devices: get: tags: - device-controller summary: Get Devices by Ids (getDevicesByIds) description: "Requested devices must be owned by tenant or assigned to customer which user is performing the request. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getDevicesByIds parameters: - name: deviceIds in: query description: A list of devices ids, separated by comma ',' required: true schema: type: array items: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Device' post: tags: - device-controller summary: Find Related Devices (findByQuery) description: 'Returns all devices that are related to the specific entity. The entity id, relation type, device types, depth of the search, and other query parameters defined using complex ''DeviceSearchQuery'' object. See ''Model'' tab of the Parameters for more info. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: findByQuery_3 requestBody: content: application/json: schema: $ref: '#/components/schemas/DeviceSearchQuery' required: true responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Device' /api/device: post: tags: - device-controller summary: Create or Update Device (saveDevice) description: "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).\ \ Device credentials are also generated if not provided in the 'accessToken' request parameter. The newly created device id will be present in the response. Specify existing Device id to update\ \ the device. Referencing non-existing device Id will cause 'Not Found' error.\n\nDevice name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the device 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 Device entity. \n\nAvailable for\ \ users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: saveDevice parameters: - name: accessToken in: query description: Optional value of the device credentials to be used during device creation. If omitted, access token will be auto-generated. required: false schema: type: string - 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 device. content: application/json: schema: $ref: '#/components/schemas/Device' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/deviceProfile: post: tags: - device-profile-controller summary: Create or Update Device Profile (saveDeviceProfile) description: "Create or update the Device Profile. When creating device profile, platform generates device profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).\ \ The newly created device profile id will be present in the response. Specify existing device profile id to update the device profile. Referencing non-existing device profile Id will cause 'Not\ \ Found' error. \n\nDevice profile name is unique in the scope of tenant. Only one 'default' device profile may exist in scope of tenant.\n\n# Device profile data definition\n\nDevice profile data\ \ object contains alarm rules configuration, device provision strategy and transport type configuration for device connectivity. Let's review some examples. First one is the default device profile\ \ data configuration and second one - the custom one. \n\n```json\n{\n \"alarms\":[\n ],\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"\ type\":\"DISABLED\",\n \"provisionDeviceSecret\":null\n },\n \"transportConfiguration\":{\n \"type\":\"DEFAULT\"\n }\n}\n```\n\n```json\n{\n \"alarms\":[\n {\n \"\ id\":\"2492b935-1226-59e9-8615-17d8978a4f93\",\n \"alarmType\":\"Temperature Alarm\",\n \"clearRule\":{\n \"schedule\":null,\n \"condition\":{\n \ \ \"spec\":{\n \"type\":\"SIMPLE\"\n },\n \"condition\":[\n {\n \"key\":{\n \"key\":\"\ temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \"value\":null,\n \"predicate\":{\n \"\ type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":30.0,\n \"dynamicValue\"\ :null\n },\n \"operation\":\"LESS\"\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n\ \ },\n \"dashboardId\":null,\n \"alarmDetails\":null\n },\n \"propagate\":false,\n \"createRules\":{\n \"MAJOR\":{\n \ \ \"schedule\":{\n \"type\":\"SPECIFIC_TIME\",\n \"endsOn\":64800000,\n \"startsOn\":43200000,\n \"timezone\":\"Europe/Kiev\"\ ,\n \"daysOfWeek\":[\n 1,\n 3,\n 5\n ]\n },\n \"condition\":{\n \ \ \"spec\":{\n \"type\":\"DURATION\",\n \"unit\":\"MINUTES\",\n \"predicate\":{\n \"userValue\":null,\n\ \ \"defaultValue\":30,\n \"dynamicValue\":null\n }\n },\n \"condition\":[\n \ \ {\n \"key\":{\n \"key\":\"temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \ \ \"value\":null,\n \"predicate\":{\n \"type\":\"COMPLEX\",\n \"operation\":\"OR\",\n \"\ predicates\":[\n {\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\"\ :null,\n \"defaultValue\":50.0,\n \"dynamicValue\":null\n },\n \ \ \"operation\":\"LESS_OR_EQUAL\"\n },\n {\n \"type\":\"NUMERIC\",\n \ \ \"value\":{\n \"userValue\":null,\n \"defaultValue\":30.0,\n \"dynamicValue\":null\n \ \ },\n \"operation\":\"GREATER\"\n }\n ]\n },\n \ \ \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n \ \ },\n \"WARNING\":{\n \"schedule\":{\n \"type\":\"CUSTOM\",\n \"items\":[\n {\n \"endsOn\"\ :0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":1\n },\n {\n \ \ \"endsOn\":64800000,\n \"enabled\":true,\n \"startsOn\":43200000,\n \"dayOfWeek\":2\n },\n \ \ {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":3\n \ \ },\n {\n \"endsOn\":57600000,\n \"enabled\":true,\n \"startsOn\":36000000,\n \ \ \"dayOfWeek\":4\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\"\ :0,\n \"dayOfWeek\":5\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \ \ \"startsOn\":0,\n \"dayOfWeek\":6\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n\ \ \"startsOn\":0,\n \"dayOfWeek\":7\n }\n ],\n \"timezone\":\"Europe/Kiev\"\n },\n\ \ \"condition\":{\n \"spec\":{\n \"type\":\"REPEATING\",\n \"predicate\":{\n \"userValue\":null,\n \ \ \"defaultValue\":5,\n \"dynamicValue\":null\n }\n },\n \"condition\":[\n \ \ {\n \"key\":{\n \"key\":\"tempConstant\",\n \"type\":\"CONSTANT\"\n },\n \ \ \"value\":30,\n \"predicate\":{\n \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\"\ :null,\n \"defaultValue\":0.0,\n \"dynamicValue\":{\n \"inherit\":false,\n \ \ \"sourceType\":\"CURRENT_DEVICE\",\n \"sourceAttribute\":\"tempThreshold\"\n }\n },\n \ \ \"operation\":\"EQUAL\"\n },\n \"valueType\":\"NUMERIC\"\n }\n ]\n },\n \ \ \"dashboardId\":null,\n \"alarmDetails\":null\n },\n \"CRITICAL\":{\n \"schedule\":null,\n \"condition\":{\n \"\ spec\":{\n \"type\":\"SIMPLE\"\n },\n \"condition\":[\n {\n \"key\":{\n \ \ \"key\":\"temperature\",\n \"type\":\"TIME_SERIES\"\n },\n \"value\":null,\n \"predicate\":{\n \ \ \"type\":\"NUMERIC\",\n \"value\":{\n \"userValue\":null,\n \"defaultValue\":50.0,\n\ \ \"dynamicValue\":null\n },\n \"operation\":\"GREATER\"\n },\n \"\ valueType\":\"NUMERIC\"\n }\n ]\n },\n \"dashboardId\":null,\n \"alarmDetails\":null\n }\n },\n\ \ \"propagateRelationTypes\":null\n }\n ],\n \"configuration\":{\n \"type\":\"DEFAULT\"\n },\n \"provisionConfiguration\":{\n \"type\":\"ALLOW_CREATE_NEW_DEVICES\"\ ,\n \"provisionDeviceSecret\":\"vaxb9hzqdbz3oqukvomg\"\n },\n \"transportConfiguration\":{\n \"type\":\"MQTT\",\n \"deviceTelemetryTopic\":\"v1/devices/me/telemetry\",\n \ \ \"deviceAttributesTopic\":\"v1/devices/me/attributes\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\":\"PROTOBUF\",\n \"deviceTelemetryProtoSchema\"\ :\"syntax =\\\"proto3\\\";\\npackage telemetry;\\n\\nmessage SensorDataReading {\\n\\n optional double temperature = 1;\\n optional double humidity = 2;\\n InnerObject innerObject = 3;\\n\\n\ \ message InnerObject {\\n optional string key1 = 1;\\n optional bool key2 = 2;\\n optional double key3 = 3;\\n optional int32 key4 = 4;\\n optional string key5 = 5;\\n }\\n}\"\ ,\n \"deviceAttributesProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage attributes;\\n\\nmessage SensorConfiguration {\\n optional string firmwareVersion = 1;\\n optional string serialNumber\ \ = 2;\\n}\",\n \"deviceRpcRequestProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcRequestMsg {\\n optional string method = 1;\\n optional int32 requestId = 2;\\\ n optional string params = 3;\\n}\",\n \"deviceRpcResponseProtoSchema\":\"syntax =\\\"proto3\\\";\\npackage rpc;\\n\\nmessage RpcResponseMsg {\\n optional string payload = 1;\\n}\"\n \ \ }\n }\n}\n```\n\nLet's review some specific objects examples related to the device profile configuration:\n\n# Alarm Schedule\n\nAlarm Schedule JSON object represents the time interval during\ \ which the alarm rule is active. Note, \n\n```json\n\"schedule\": null\n```\n\nmeans alarm rule is active all the time. **'daysOfWeek'** field represents Monday as 1, Tuesday as 2 and so on. **'startsOn'**\ \ and **'endsOn'** fields represent hours in millis (e.g. 64800000 = 18:00 or 6pm). **'enabled'** flag specifies if item in a custom rule is active for specific day of the week:\n\n## Specific Time\ \ Schedule\n\n```json\n{\n \"schedule\":{\n \"type\":\"SPECIFIC_TIME\",\n \"endsOn\":64800000,\n \"startsOn\":43200000,\n \"timezone\":\"Europe/Kiev\",\n \"daysOfWeek\"\ :[\n 1,\n 3,\n 5\n ]\n }\n}\n```\n\n## Custom Schedule\n\n```json\n{\n \"schedule\":{\n \"type\":\"CUSTOM\",\n \"items\":[\n {\n \"\ endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":1\n },\n {\n \"endsOn\":64800000,\n \"enabled\":true,\n\ \ \"startsOn\":43200000,\n \"dayOfWeek\":2\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"\ dayOfWeek\":3\n },\n {\n \"endsOn\":57600000,\n \"enabled\":true,\n \"startsOn\":36000000,\n \"dayOfWeek\":4\n },\n {\n\ \ \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"dayOfWeek\":5\n },\n {\n \"endsOn\":0,\n \"enabled\"\ :false,\n \"startsOn\":0,\n \"dayOfWeek\":6\n },\n {\n \"endsOn\":0,\n \"enabled\":false,\n \"startsOn\":0,\n \"\ dayOfWeek\":7\n }\n ],\n \"timezone\":\"Europe/Kiev\"\n }\n}\n```\n\n# Alarm condition type (**'spec'**)\n\nAlarm condition type can be either simple, duration, or repeating.\ \ For example, 5 times in a row or during 5 minutes.\n\nNote, **'userValue'** field is not used and reserved for future usage, **'dynamicValue'** is used for condition appliance by using the value\ \ of the **'sourceAttribute'** or else **'defaultValue'** is used (if **'sourceAttribute'** is absent).\n\n**'sourceType'** of the **'sourceAttribute'** can be: \n * 'CURRENT_DEVICE';\n * 'CURRENT_CUSTOMER';\n\ \ * 'CURRENT_TENANT'.\n\n**'sourceAttribute'** can be inherited from the owner if **'inherit'** is set to true (for CURRENT_DEVICE and CURRENT_CUSTOMER).\n\n## Repeating alarm condition\n\n```json\n\ {\n \"spec\":{\n \"type\":\"REPEATING\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":5,\n \"dynamicValue\":{\n \"inherit\":true,\n \ \ \"sourceType\":\"CURRENT_DEVICE\",\n \"sourceAttribute\":\"tempAttr\"\n }\n }\n }\n}\n```\n\n## Duration alarm condition\n\n```json\n{\n \"spec\":{\n \ \ \"type\":\"DURATION\",\n \"unit\":\"MINUTES\",\n \"predicate\":{\n \"userValue\":null,\n \"defaultValue\":30,\n \"dynamicValue\":null\n }\n }\n}\n```\n\ \n**'unit'** can be: \n * 'SECONDS';\n * 'MINUTES';\n * 'HOURS';\n * 'DAYS'.\n\n# Key Filters\n\nKey filter objects are created under the **'condition'** array. They allow you to define complex\ \ logical expressions over entity field, attribute, latest time series value or constant. The filter is defined using 'key', 'valueType', 'value' (refers to the value of the 'CONSTANT' alarm filter\ \ key type) and 'predicate' objects. Let's review each object:\n\n## Alarm Filter Key\n\nFilter Key defines either entity field, attribute, telemetry or constant. It is a JSON object that consists\ \ the key name and type. The following filter key types are supported:\n * 'ATTRIBUTE' - used for attributes values;\n * 'TIME_SERIES' - used for time series values;\n * 'ENTITY_FIELD' - used for\ \ accessing entity fields like 'name', 'label', etc. The list of available fields depends on the entity type;\n * 'CONSTANT' - constant value specified.\n\nLet's review the example:\n\n```json\n\ {\n \"type\": \"TIME_SERIES\",\n \"key\": \"temperature\"\n}\n```\n\n## Value Type and Operations\n\nProvides a hint about the data type of the entity field that is defined in the filter key.\ \ The value type impacts the list of possible operations that you may use in the corresponding predicate. For example, you may use 'STARTS_WITH' or 'END_WITH', but you can't use 'GREATER_OR_EQUAL'\ \ for string values.The following filter value types and corresponding predicate operations are supported: \n\n * 'STRING' - used to filter any 'String' or 'JSON' values. Operations: EQUAL, NOT_EQUAL,\ \ STARTS_WITH, ENDS_WITH, CONTAINS, NOT_CONTAINS; \n * 'NUMERIC' - used for 'Long' and 'Double' values. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL; \n * 'BOOLEAN'\ \ - used for boolean values. Operations: EQUAL, NOT_EQUAL;\n * 'DATE_TIME' - similar to numeric, transforms value to milliseconds since epoch. Operations: EQUAL, NOT_EQUAL, GREATER, LESS, GREATER_OR_EQUAL,\ \ LESS_OR_EQUAL; \n\n\n\n\n## Filter Predicate\n\nFilter Predicate defines the logical expression to evaluate. The list of available operations depends on the filter value type, see above. Platform\ \ supports 4 predicate types: 'STRING', 'NUMERIC', 'BOOLEAN' and 'COMPLEX'. The last one allows to combine multiple operations over one filter key.\n\nSimple predicate example to check 'value <\ \ 100': \n\n```json\n{\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\": 100,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n}\n```\n\nComplex\ \ predicate example, to check 'value < 10 or value > 20': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \"\ value\": {\n \"userValue\": null,\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"GREATER\",\n\ \ \"value\": {\n \"userValue\": null,\n \"defaultValue\": 20,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n}\n```\n\nMore complex predicate\ \ example, to check 'value < 10 or (value > 50 && value < 60)': \n\n```json\n{\n \"type\": \"COMPLEX\",\n \"operation\": \"OR\",\n \"predicates\": [\n {\n \"operation\": \"LESS\",\n \ \ \"value\": {\n \"userValue\": null,\n \"defaultValue\": 10,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"type\": \"COMPLEX\"\ ,\n \"operation\": \"AND\",\n \"predicates\": [\n {\n \"operation\": \"GREATER\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\"\ : 50,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n },\n {\n \"operation\": \"LESS\",\n \"value\": {\n \"userValue\"\ : null,\n \"defaultValue\": 60,\n \"dynamicValue\": null\n },\n \"type\": \"NUMERIC\"\n }\n ]\n }\n ]\n}\n```\n\nYou may also want to replace\ \ hardcoded values (for example, temperature > 20) with the more dynamic expression (for example, temperature > value of the tenant attribute with key 'temperatureThreshold'). It is possible to\ \ use 'dynamicValue' to define attribute of the tenant, customer or device. See example below:\n\n```json\n{\n \"operation\": \"GREATER\",\n \"value\": {\n \"userValue\": null,\n \"defaultValue\"\ : 0,\n \"dynamicValue\": {\n \"inherit\": false,\n \"sourceType\": \"CURRENT_TENANT\",\n \"sourceAttribute\": \"temperatureThreshold\"\n }\n },\n \"type\": \"NUMERIC\"\n}\n\ ```\n\nNote that you may use 'CURRENT_DEVICE', 'CURRENT_CUSTOMER' and 'CURRENT_TENANT' as a 'sourceType'. The 'defaultValue' is used when the attribute with such a name is not defined for the chosen\ \ source. The 'sourceAttribute' can be inherited from the owner of the specified 'sourceType' if 'inherit' is set to true.\n\n# Provision Configuration\n\nThere are 3 types of device provision configuration\ \ for the device profile: \n * 'DISABLED';\n * 'ALLOW_CREATE_NEW_DEVICES';\n * 'CHECK_PRE_PROVISIONED_DEVICES'.\n\nPlease refer to the [docs](https://thingsboard.io/docs/user-guide/device-provisioning/)\ \ for more details.\n\n# Transport Configuration\n\n5 transport configuration types are available:\n * 'DEFAULT';\n * 'MQTT';\n * 'LWM2M';\n * 'COAP';\n * 'SNMP'.\n\nDefault type supports basic\ \ MQTT, HTTP, CoAP and LwM2M transports. Please refer to the [docs](https://thingsboard.io/docs/user-guide/device-profiles/#transport-configuration) for more details about other types.\n\nSee another\ \ example of COAP transport configuration below:\n\n```json\n{\n \"type\":\"COAP\",\n \"clientSettings\":{\n \"edrxCycle\":null,\n \"powerMode\":\"DRX\",\n \"psmActivityTimer\"\ :null,\n \"pagingTransmissionWindow\":null\n },\n \"coapDeviceTypeConfiguration\":{\n \"coapDeviceType\":\"DEFAULT\",\n \"transportPayloadTypeConfiguration\":{\n \"transportPayloadType\"\ :\"JSON\"\n }\n }\n}\n```Remove 'id', 'tenantId' from the request body example (below) to create new Device Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: saveDeviceProfile requestBody: content: application/json: schema: $ref: '#/components/schemas/DeviceProfile' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceProfile' /api/deviceProfile/{deviceProfileId}/default: post: tags: - device-profile-controller summary: Make Device Profile Default (setDefaultDeviceProfile) description: 'Marks device profile as default within a tenant scope. Available for users with ''TENANT_ADMIN'' authority.' operationId: setDefaultDeviceProfile parameters: - name: deviceProfileId in: path description: A string value representing the device 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/DeviceProfile' /api/device/credentials: post: tags: - device-controller summary: Update Device Credentials (updateDeviceCredentials) description: "During device creation, platform generates random 'ACCESS_TOKEN' credentials. \" +\nUse this method to update the device credentials. First use 'getDeviceCredentialsByDeviceId' to get\ \ the credentials id and value.\nThen use current method to update the credentials type and value. It is not possible to create multiple device credentials for the same device.\nThe structure of\ \ device credentials id and value is simple for the 'ACCESS_TOKEN' but is much more complex for the 'MQTT_BASIC' or 'LWM2M_CREDENTIALS'.\nYou may find the example of device with different type of\ \ credentials below: \n\n- Credentials type: \"Access token\" with device ID and with device ID below: \n\n```json\n{\n \"id\": {\n \"id\":\"c886a090-168d-11ee-87c9-6f157dbc816a\"\ \n },\n \"deviceId\": {\n \"id\":\"c5fb3ac0-168d-11ee-87c9-6f157dbc816a\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une4\"\ \n}\n```\n\n- Credentials type: \"X509\" with device profile ID below: \n\nNote: credentialsId - format Sha3Hash, certificateValue - format PEM (with \"\ --BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"id\": {\n \"id\":\"309bd9c0-14f4-11ee-9fc9-d9b7463abb63\"\n },\n \"deviceId\": {\n \"id\":\"3092b200-14f4-11ee-9fc9-d9b7463abb63\"\ ,\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"6b8adb49015500e51a527acd332b51684ab9b49b4ade03a9582a44c455e2e9b6\",\n \"credentialsValue\"\ : \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUUEKxS9hTz4l+oLUMF0LV6TC/gCIwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTczNloXDTI0MDMyODE0NTczNlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlUHJvZmlsZUNlcnRAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECMlWO72krDoUL9FQjUmSCetkhaEGJUfQkdSfkLSNa0GyAEIMbfmzI4zITeapunu4rGet3EMyLydQzuQanBicp6NTMFEwHQYDVR0OBBYEFHpZ78tPnztNii4Da/yCw6mhEIL3MB8GA1UdIwQYMBaAFHpZ78tPnztNii4Da/yCw6mhEIL3MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgJ7qyMFqNcwSYkH6o+UlQXzLWfwZbNjVk+aR7foAZNGsCIQDsd7v3WQIGHiArfZeDs1DLEDuV/2h6L+ZNoGNhEKL+1A==\ \ -----END CERTIFICATE-----\"\n}\n```\n\n- Credentials type: \"MQTT_BASIC\" with device profile ID below: \n\n```json\n{\n \"id\": {\n \"id\":\"d877ffb0-14f5-11ee-9fc9-d9b7463abb63\"\ \n },\n \"deviceId\": {\n \"id\":\"d875dcd0-14f5-11ee-9fc9-d9b7463abb63\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\ \":\\\"juy03yv4owqxcmqhqtvk\\\",\\\"userName\\\":\\\"ov19fxca0cyjn7lm7w7u\\\",\\\"password\\\":\\\"twy94he114dfi9usyk1o\\\"}\"\n}\n```\n\n- You may find the example of LwM2M device and RPK\ \ credentials below: \n\nNote: LwM2M device - only existing device profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"id\": {\n \"id\":\"e238d4d0-1689-11ee-98c6-1713c1be5a8e\"\ \n },\n \"deviceId\": {\n \"id\":\"e232e160-1689-11ee-98c6-1713c1be5a8e\",\n \"entityType\":\"DEVICE\"\n },\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"credentialsId\": \"LwRpk00000000\"\ ,\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdvBZZ2vQRK9wgDhctj6B1c7bxR3Z0wYg1+YdoYFnVUKWb+rIfTTyYK9tmQJx5Vlb5fxdLnVv1RJOPiwsLIQbAA==\\\ \" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\ \", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\ \"}, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\ \", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\ \"}} }\"\n}\n```\n\nUpdate to real value:\n - 'id' (this is id of Device Credentials -> \"Get Device Credentials (getDeviceCredentialsByDeviceId)\",\n - 'deviceId.id' (this is id of Device).\n\ Remove 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity.\n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: updateDeviceCredentials requestBody: content: application/json: schema: $ref: '#/components/schemas/DeviceCredentials' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceCredentials' /api/device/bulk_import: post: tags: - device-controller summary: Import the Bulk of Devices (processDevicesBulkImport) description: 'There''s an ability to import the bulk of devices using the only .csv file. Available for users with ''TENANT_ADMIN'' authority.' operationId: processDevicesBulkImport requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkImportRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkImportResultDevice' /api/device-with-credentials: post: tags: - device-controller summary: Create Device (saveDevice) with Credentials description: "Create or update the Device. When creating device, platform generates Device Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)).\ \ Requires to provide the Device Credentials object as well as an existing device profile ID or use \"default\".\nYou may find the example of device with different type of credentials below: \n\n\ - Credentials type: \"Access token\" with device profile ID below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_AccessToken\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken\"\ ,\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"ACCESS_TOKEN\"\ ,\n \"credentialsId\": \"6hmxew8pmmzng4e3une2\"\n }\n}\n```\n\n- Credentials type: \"Access token\" with device profile default below: \n\n```json\n{\n \"device\": {\n \"\ name\":\"Name_DeviceWithCredantial_AccessToken_Default\",\n \"label\":\"Label_DeviceWithCredantial_AccessToken_Default\",\n \"type\": \"default\"\n },\n \"credentials\": {\n \"credentialsType\"\ : \"ACCESS_TOKEN\",\n \"credentialsId\": \"6hmxew8pmmzng4e3une3\"\n }\n}\n```\n\n- Credentials type: \"X509\" with device profile ID below: \n\nNote: credentialsId - format\ \ Sha3Hash, certificateValue - format PEM (with \"--BEGIN CERTIFICATE----\" and -\"----END CERTIFICATE-\").\n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_X509_Certificate\"\ ,\n \"label\":\"Label_DeviceWithCredantial_X509_Certificate\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n \ \ }\n },\n \"credentials\": {\n \"credentialsType\": \"X509_CERTIFICATE\",\n \"credentialsId\": \"84f5911765abba1f96bf4165604e9e90338fc6214081a8e623b6ff9669aedb27\",\n \"credentialsValue\"\ : \"-----BEGIN CERTIFICATE----- MIICMTCCAdegAwIBAgIUI9dBuwN6pTtK6uZ03rkiCwV4wEYwCgYIKoZIzj0EAwIwbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MB4XDTIzMDMyOTE0NTYxN1oXDTI0MDMyODE0NTYxN1owbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5ldyBZb3JrMRowGAYDVQQKDBFUaGluZ3NCb2FyZCwgSW5jLjEwMC4GA1UEAwwnZGV2aWNlQ2VydGlmaWNhdGVAWDUwOVByb3Zpc2lvblN0cmF0ZWd5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Zo791qKQiGNBm11r4ZGxh+w+ossZL3xc46ufq5QckQHP7zkD2XDAcmP5GvdkM1sBFN9AWaCkQfNnWmfERsOOKNTMFEwHQYDVR0OBBYEFFFc5uyCyglQoZiKhzXzMcQ3BKORMB8GA1UdIwQYMBaAFFFc5uyCyglQoZiKhzXzMcQ3BKORMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhANbA9CuhoOifZMMmqkpuld+65CR+ItKdXeRAhLMZuccuAiB0FSQB34zMutXrZj1g8Gl5OkE7YryFHbei1z0SveHR8g==\ \ -----END CERTIFICATE-----\"\n }\n}\n```\n\n- Credentials type: \"MQTT_BASIC\" with device profile ID below: \n\n```json\n{\n \"device\": {\n \"name\":\"Name_DeviceWithCredantial_MQTT_Basic\"\ ,\n \"label\":\"Label_DeviceWithCredantial_MQTT_Basic\",\n \"deviceProfileId\":{\n \"id\":\"9d9588c0-06c9-11ee-b618-19be30fdeb60\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n\ \ },\n \"credentials\": {\n \"credentialsType\": \"MQTT_BASIC\",\n \"credentialsValue\": \"{\\\"clientId\\\":\\\"5euh5nzm34bjjh1efmlt\\\",\\\"userName\\\":\\\"onasd1lgwasmjl7v2v7h\\\",\\\ \"password\\\":\\\"b9xtm4ny8kt9zewaga5o\\\"}\"\n }\n}\n```\n\n- You may find the example of LwM2M device and RPK credentials below: \n\nNote: LwM2M device - only existing device\ \ profile ID (Transport configuration -> Transport type: \"LWM2M\".\n\n```json\n{\n \"device\": {\n \"name\":\"Name_LwRpk00000000\",\n \"label\":\"Label_LwRpk00000000\",\n \"deviceProfileId\"\ :{\n \"id\":\"a660bd50-10ef-11ee-8737-b5634e73c779\",\n \"entityType\":\"DEVICE_PROFILE\"\n }\n },\n \"credentials\": {\n \"credentialsType\": \"LWM2M_CREDENTIALS\",\n \"\ credentialsId\": \"LwRpk00000000\",\n \"credentialsValue\":\n \"{\\\"client\\\":{ \\\"endpoint\\\":\\\"LwRpk00000000\\\", \\\"securityConfigClientMode\\\":\\\"RPK\\\", \\\"key\\\":\\\"\ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\" }, \\\"bootstrap\\\":{ \\\"bootstrapServer\\\":{ \\\"securityMode\\\ \":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\", \\\"clientSecretKey\\\ \":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\"\ }, \\\"lwm2mServer\\\":{ \\\"securityMode\\\":\\\"RPK\\\", \\\"clientPublicKeyOrId\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUEBxNl/RcYJNm8mk91CyVXoIJiROYDlXcSSqK6e5bDHwOW4ZiN2lNnXalyF0Jxw8MbAytnDMERXyAja5VEMeVQ==\\\ \", \\\"clientSecretKey\\\":\\\"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd9GAx7yZW37autew5KZykn4IgRpge/tZSjnudnZJnMahRANCAARQQHE2X9Fxgk2byaT3ULJVeggmJE5gOVdxJKorp7lsMfA5bhmI3aU2ddqXIXQnHDwxsDK2cMwRFfICNrlUQx5V\\\ \"}} }\"\n }\n}\n```\n\nRemove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Device entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER'\ \ authority." operationId: saveDeviceWithCredentials_1 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: content: application/json: schema: $ref: '#/components/schemas/SaveDeviceWithCredentialsRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/customer/{customerId}/device/{deviceId}: post: tags: - device-controller summary: Assign Device to Customer (assignDeviceToCustomer) description: 'Creates assignment of the device to customer. Customer will be able to query device afterwards. Available for users with ''TENANT_ADMIN'' authority.' operationId: assignDeviceToCustomer 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: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/customer/public/device/{deviceId}: post: tags: - device-controller summary: Make Device Publicly Available (assignDeviceToPublicCustomer) description: 'Device 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 device. Available for users with ''TENANT_ADMIN'' authority.' operationId: assignDeviceToPublicCustomer parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' /api/customer/device/{deviceName}/claim: post: tags: - device-controller summary: Claim Device (claimDevice) description: "Claiming makes it possible to assign a device to the specific customer using device/server side claiming data (in the form of secret key).To make this happen you have to provide unique\ \ device name and optional claiming data (it is needed only for device-side claiming).Once device is claimed, the customer becomes its owner and customer users may access device data as well as\ \ control the device. \nIn order to enable claiming devices feature a system parameter security.claim.allowClaimingByDefault should be set to true, otherwise a server-side claimingAllowed attribute\ \ with the value true is obligatory for provisioned devices. \nSee official documentation for more details regarding claiming.\n\nAvailable for users with 'CUSTOMER_USER' authority." operationId: claimDevice parameters: - name: deviceName in: path description: Unique name of the device which is going to be claimed required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ClaimRequest' responses: '200': description: OK content: application/json: schema: type: string delete: tags: - device-controller summary: Reclaim Device (reClaimDevice) description: 'Reclaiming means the device will be unassigned from the customer and the device will be available for claiming again. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: reClaimDevice parameters: - name: deviceName in: path description: Unique name of the device which is going to be reclaimed required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: string /api/tenant/devices: get: tags: - device-controller summary: Get Tenant Device (getTenantDevice) description: 'Requested device must be owned by tenant that the user belongs to. Device name is an unique property of device. So it can be used to identify the device. Available for users with ''TENANT_ADMIN'' authority.' operationId: getTenantDevices 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: Device type as the name of the device profile required: false schema: type: string - name: textSearch in: query description: The case insensitive 'substring' filter based on the device 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 - deviceProfileName - label - customerTitle - name: sortOrder in: query description: Sort order. ASC (ASCENDING) or DESC (DESCENDING) required: false schema: type: string enum: - ASC - DESC - name: deviceName in: query description: A string value representing the Device name. required: true schema: type: string responses: '200': description: OK content: application/json: schema: oneOf: - $ref: '#/components/schemas/Device' - $ref: '#/components/schemas/PageDataDevice' /api/tenant/deviceInfos: get: tags: - device-controller summary: Get Tenant Device Infos (getTenantDeviceInfos) description: "Returns a page of devices 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. Device Info is an extension of the default Device object that contains information about the assigned customer name and device profile\ \ name. \n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: getTenantDeviceInfos 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: Device type as the name of the device profile required: false schema: type: string - name: deviceProfileId in: query description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: false schema: type: string - name: active in: query description: A boolean value representing the device active flag. required: false schema: type: boolean - name: textSearch in: query description: The case insensitive 'substring' filter based on the device 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 - deviceProfileName - 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/PageDataDeviceInfo' /api/otaPackages: get: tags: - ota-package-controller summary: Get OTA Package Infos (getOtaPackages) description: "Returns a page of OTA Package 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. OTA Package Info is a lightweight object that includes main information about the OTA Package excluding the heavyweight data.\ \ \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getOtaPackages 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 ota package title. required: false schema: type: string - name: sortProperty in: query description: Property of entity to sort by required: false schema: type: string enum: - createdTime - type - title - version - tag - url - fileName - dataSize - checksum - 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/PageDataOtaPackageInfo' /api/otaPackages/{deviceProfileId}/{type}: get: tags: - ota-package-controller summary: Get OTA Package Infos (getOtaPackages) description: "Returns a page of OTA Package 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. OTA Package Info is a lightweight object that includes main information about the OTA Package excluding the heavyweight data.\ \ \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getOtaPackages_1 parameters: - name: deviceProfileId in: path description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string - name: type in: path description: OTA Package type. required: true schema: type: string enum: - FIRMWARE - SOFTWARE - 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 ota package title. required: false schema: type: string - name: sortProperty in: query description: Property of entity to sort by required: false schema: type: string enum: - createdTime - type - title - version - tag - url - fileName - dataSize - checksum - 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/PageDataOtaPackageInfo' /api/otaPackage/{otaPackageId}/download: get: tags: - ota-package-controller summary: Download OTA Package (downloadOtaPackage) description: 'Download OTA Package based on the provided OTA Package Id. Available for users with ''TENANT_ADMIN'' authority.' operationId: downloadOtaPackage parameters: - name: otaPackageId in: path description: A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: string format: binary /api/otaPackage/info/{otaPackageId}: get: tags: - ota-package-controller summary: Get OTA Package Info (getOtaPackageInfoById) description: "Fetch the OTA Package Info object based on the provided OTA Package Id. OTA Package Info is a lightweight object that includes main information about the OTA Package excluding the heavyweight\ \ data. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getOtaPackageInfoById parameters: - name: otaPackageId in: path description: A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OtaPackageInfo' /api/edge/{edgeId}/devices: get: tags: - device-controller summary: Get Devices Assigned to Edge (getEdgeDevices) description: "Returns a page of devices assigned to edge. 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: getEdgeDevices 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: 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: Device type as the name of the device profile required: false schema: type: string - name: deviceProfileId in: query description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: false schema: type: string - name: active in: query description: A boolean value representing the device active flag. required: false schema: type: boolean - name: textSearch in: query description: The case insensitive 'substring' filter based on the device 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 - deviceProfileName - label - customerTitle - name: sortOrder in: query description: Sort order. ASC (ASCENDING) or DESC (DESCENDING) required: false schema: type: string enum: - ASC - DESC - name: startTime in: query description: Timestamp. Devices with creation time before it won't be queried required: false schema: type: integer format: int64 - name: endTime in: query description: Timestamp. Devices with creation time after it won't be queried required: false schema: type: integer format: int64 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PageDataDeviceInfo' /api/devices/count/{otaPackageType}/{deviceProfileId}: get: tags: - device-controller summary: Count Devices by Device Profile (countByDeviceProfileAndEmptyOtaPackage) description: 'The platform gives an ability to load OTA (over-the-air) packages to devices. It can be done in two different ways: device scope or device profile scope.In the response you will find the number of devices with specified device profile, but without previously defined device scope OTA package. It can be useful when you want to define number of devices that will be affected with future OTA package Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: countByDeviceProfileAndEmptyOtaPackage parameters: - name: otaPackageType in: path description: OTA package type required: true schema: type: string enum: - FIRMWARE - SOFTWARE - name: deviceProfileId in: path description: Device Profile Id. I.g. '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: integer format: int64 /api/deviceProfiles: get: tags: - device-profile-controller summary: Get Device Profiles (getDeviceProfiles) description: "Returns a page of devices profile 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. \n\nAvailable for users with 'TENANT_ADMIN' authority." operationId: getDeviceProfiles 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 device profile 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 - transportType - description - isDefault - 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/PageDataDeviceProfile' /api/deviceProfileInfos: get: tags: - device-profile-controller summary: Get Device Profile Infos by Ids (getDeviceProfilesByIds) description: "Requested device profiles must be owned by tenant which is performing the request. \n\n" operationId: getDeviceProfileInfos 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 device profile 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 - transportType - description - isDefault - name: sortOrder in: query description: Sort order. ASC (ASCENDING) or DESC (DESCENDING) required: false schema: type: string enum: - ASC - DESC - name: transportType in: query description: Type of the transport required: false schema: type: string enum: - DEFAULT - MQTT - COAP - LWM2M - SNMP - name: deviceProfileIds in: query description: A list of device profile 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/DeviceProfileInfo' - $ref: '#/components/schemas/PageDataDeviceProfileInfo' /api/deviceProfileInfo/{deviceProfileId}: get: tags: - device-profile-controller summary: Get Device Profile Info (getDeviceProfileInfoById) description: "Fetch the Device Profile Info object based on the provided Device Profile Id. Device Profile Info is a lightweight object that includes main information about Device Profile excluding\ \ the heavyweight configuration object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getDeviceProfileInfoById parameters: - name: deviceProfileId in: path description: A string value representing the device 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/DeviceProfileInfo' /api/deviceProfileInfo/default: get: tags: - device-profile-controller summary: Get Default Device Profile (getDefaultDeviceProfileInfo) description: "Fetch the Default Device Profile Info object. Device Profile Info is a lightweight object that includes main information about Device Profile excluding the heavyweight configuration\ \ object. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getDefaultDeviceProfileInfo responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceProfileInfo' /api/deviceProfile/{deviceProfileId}: get: tags: - device-profile-controller summary: Get Device Profile (getDeviceProfileById) description: "Fetch the Device Profile object based on the provided Device Profile Id. The server checks that the device profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN'\ \ authority." operationId: getDeviceProfileById parameters: - name: deviceProfileId in: path description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string - name: inlineImages in: query description: Inline images as a data URL (Base64) required: false schema: type: boolean responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceProfile' delete: tags: - device-profile-controller summary: Delete Device Profile (deleteDeviceProfile) description: 'Deletes the device profile. Referencing non-existing device profile Id will cause an error. Can''t delete the device profile if it is referenced by existing devices. Available for users with ''TENANT_ADMIN'' authority.' operationId: deleteDeviceProfile parameters: - name: deviceProfileId in: path description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK /api/deviceProfile/names: get: tags: - device-profile-controller summary: Get Device Profile Names (getDeviceProfileNames) description: 'Returns a set of unique device profile names owned by the tenant. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: getDeviceProfileNames parameters: - name: activeOnly in: query description: Flag indicating whether to retrieve exclusively the names of device profiles that are referenced by tenant's devices. required: false schema: type: boolean default: false responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/EntityInfo' /api/deviceProfile/devices/keys/timeseries: get: tags: - device-profile-controller summary: Get Time Series Keys (getTimeseriesKeys) description: "Get a set of unique time series keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete\ \ in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with\ \ 'TENANT_ADMIN' authority." operationId: getTimeseriesKeys_1 parameters: - name: deviceProfileId in: query description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: false schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/deviceProfile/devices/keys/attributes: get: tags: - device-profile-controller summary: Get Attribute Keys (getAttributesKeys) description: "Get a set of unique attribute keys used by devices that belong to specified profile. If profile is not set returns a list of unique keys among all profiles. The call is used for auto-complete\ \ in the UI forms. The implementation limits the number of devices that participate in search to 100 as a trade of between accurate results and time-consuming queries. \n\nAvailable for users with\ \ 'TENANT_ADMIN' authority." operationId: getAttributesKeys parameters: - name: deviceProfileId in: query description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: false schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: type: string /api/device/{deviceId}: get: tags: - device-controller summary: Get Device (getDeviceById) description: 'Fetch the Device object based on the provided Device Id. If the user has the authority of ''TENANT_ADMIN'', the server checks that the device is owned by the same tenant. If the user has the authority of ''CUSTOMER_USER'', the server checks that the device is assigned to the same customer. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: getDeviceById parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' delete: tags: - device-controller summary: Delete Device (deleteDevice) description: 'Deletes the device, it''s credentials and all the relations (from and to the device). Referencing non-existing device Id will cause an error. Available for users with ''TENANT_ADMIN'' authority.' operationId: deleteDevice parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK /api/device/{deviceId}/credentials: get: tags: - device-controller summary: Get Device Credentials (getDeviceCredentialsByDeviceId) description: 'If during device creation there wasn''t specified any credentials, platform generates random ''ACCESS_TOKEN'' credentials. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: getDeviceCredentialsByDeviceId parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceCredentials' /api/device/types: get: tags: - device-controller summary: Get Device Types (getDeviceTypes) description: 'Deprecated. See ''getDeviceProfileNames'' API from Device Profile Controller instead. Available for users with ''TENANT_ADMIN'' or ''CUSTOMER_USER'' authority.' operationId: getDeviceTypes responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/EntitySubtype' deprecated: true /api/device/info/{deviceId}: get: tags: - device-controller summary: Get Device Info (getDeviceInfoById) description: "Fetch the Device Info object based on the provided Device Id. If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by the same tenant.\ \ If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. Device Info is an extension of the default Device object that contains information\ \ about the assigned customer name and device profile name. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getDeviceInfoById parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceInfo' /api/device-connectivity/{protocol}/certificate/download: get: tags: - device-connectivity-controller summary: Download Server Certificate Using File Path Defined in Device.connectivity Properties (downloadServerCertificate) description: Download server certificate. operationId: downloadServerCertificate parameters: - name: protocol in: path description: 'A string value representing the device connectivity protocol. Possible values: ''mqtt'', ''mqtts'', ''http'', ''https'', ''coap'', ''coaps''' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: string format: binary /api/device-connectivity/{deviceId}: get: tags: - device-connectivity-controller summary: Get Commands to Publish Device Telemetry (getDevicePublishTelemetryCommands) description: "Fetch the list of commands to publish device telemetry based on device profile If the user has the authority of 'Tenant Administrator', the server checks that the device is owned by\ \ the same tenant. If the user has the authority of 'Customer User', the server checks that the device is assigned to the same customer. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER'\ \ authority." operationId: getDevicePublishTelemetryCommands parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: examples: http: description: http value: curl -v -X POST http://localhost:8080/api/v1/0ySs4FTOn5WU15XLmal8/telemetry --header Content-Type:application/json --data {temperature:25} mqtt: description: mqtt value: mosquitto_pub -d -q 1 -h localhost -t v1/devices/me/telemetry -i myClient1 -u myUsername1 -P myPassword -m {temperature:25} coap: description: coap value: coap-client -m POST coap://localhost:5683/api/v1/0ySs4FTOn5WU15XLmal8/telemetry -t json -e {temperature:25} /api/device-connectivity/gateway-launch/{deviceId}/docker-compose/download: get: tags: - device-connectivity-controller summary: Download Generated Docker-compose.yml File for Gateway (downloadGatewayDockerCompose) description: Download generated docker-compose.yml for gateway. operationId: downloadGatewayDockerCompose parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: string format: binary /api/customer/{customerId}/devices: get: tags: - device-controller summary: Get Customer Devices (getCustomerDevices) description: "Returns a page of devices 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: getCustomerDevices 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: Device type as the name of the device profile required: false schema: type: string - name: textSearch in: query description: The case insensitive 'substring' filter based on the device 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 - deviceProfileName - 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/PageDataDevice' /api/customer/{customerId}/deviceInfos: get: tags: - device-controller summary: Get Customer Device Infos (getCustomerDeviceInfos) description: "Returns a page of devices 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. Device Info is an extension of the default Device object that contains information about the assigned customer name and device\ \ profile name. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority." operationId: getCustomerDeviceInfos 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: Device type as the name of the device profile required: false schema: type: string - name: deviceProfileId in: query description: A string value representing the device profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: false schema: type: string - name: active in: query description: A boolean value representing the device active flag. required: false schema: type: boolean - name: textSearch in: query description: The case insensitive 'substring' filter based on the device 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 - deviceProfileName - 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/PageDataDeviceInfo' /api/customer/device/{deviceId}: delete: tags: - device-controller summary: Unassign Device from Customer (unassignDeviceFromCustomer) description: 'Clears assignment of the device to customer. Customer will not be able to query device afterwards. Available for users with ''TENANT_ADMIN'' authority.' operationId: unassignDeviceFromCustomer parameters: - name: deviceId in: path description: A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Device' components: schemas: AlarmCondition: type: object properties: condition: type: array description: JSON array of alarm condition filters items: $ref: '#/components/schemas/AlarmConditionFilter' spec: description: JSON object representing alarm condition type oneOf: - $ref: '#/components/schemas/DurationAlarmConditionSpec' - $ref: '#/components/schemas/RepeatingAlarmConditionSpec' - $ref: '#/components/schemas/SimpleAlarmConditionSpec' AlarmConditionFilter: type: object properties: key: $ref: '#/components/schemas/AlarmConditionFilterKey' description: JSON object for specifying alarm condition by specific key valueType: type: string description: String representation of the type of the value enum: - STRING - NUMERIC - BOOLEAN - DATE_TIME example: NUMERIC value: description: Value used in Constant comparison. For other types, such as TIME_SERIES or ATTRIBUTE, the predicate condition is used predicate: description: JSON object representing filter condition oneOf: - $ref: '#/components/schemas/BooleanFilterPredicate' - $ref: '#/components/schemas/ComplexFilterPredicate' - $ref: '#/components/schemas/NumericFilterPredicate' - $ref: '#/components/schemas/StringFilterPredicate' AlarmConditionFilterKey: type: object properties: type: type: string description: The key type enum: - ATTRIBUTE - TIME_SERIES - ENTITY_FIELD - CONSTANT example: TIME_SERIES key: type: string description: String value representing the key example: temp AlarmConditionSpec: discriminator: propertyName: type properties: type: type: string required: - type AlarmRule: type: object properties: condition: $ref: '#/components/schemas/AlarmCondition' description: JSON object representing the alarm rule condition schedule: description: JSON object representing time interval during which the rule is active oneOf: - $ref: '#/components/schemas/AnyTimeSchedule' - $ref: '#/components/schemas/CustomTimeSchedule' - $ref: '#/components/schemas/SpecificTimeSchedule' alarmDetails: type: string description: String value representing the additional details for an alarm rule dashboardId: $ref: '#/components/schemas/DashboardId' description: JSON object with the dashboard Id representing the reference to alarm details dashboard used by mobile application AlarmSchedule: type: object discriminator: propertyName: type properties: type: type: string enum: - ANY_TIME - SPECIFIC_TIME - CUSTOM dynamicValue: $ref: '#/components/schemas/DynamicValueString' AllowCreateNewDevicesDeviceProfileProvisionConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileProvisionConfiguration' AnyTimeSchedule: allOf: - $ref: '#/components/schemas/AlarmSchedule' BooleanFilterPredicate: allOf: - $ref: '#/components/schemas/KeyFilterPredicate' - type: object properties: operation: type: string enum: - EQUAL - NOT_EQUAL value: $ref: '#/components/schemas/FilterPredicateValueBoolean' BulkImportRequest: type: object properties: file: type: string mapping: $ref: '#/components/schemas/Mapping' BulkImportResultDevice: 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 CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileProvisionConfiguration' ClaimRequest: type: object description: Claiming request which can optionally contain secret key properties: secretKey: type: string ClientAttributesQueryingSnmpCommunicationConfig: allOf: - $ref: '#/components/schemas/SnmpCommunicationConfig' - type: object properties: mappings: type: array items: $ref: '#/components/schemas/SnmpMapping' queryingFrequencyMs: type: integer format: int64 CoapDeviceProfileTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileTransportConfiguration' - type: object properties: coapDeviceTypeConfiguration: oneOf: - $ref: '#/components/schemas/DefaultCoapDeviceTypeConfiguration' - $ref: '#/components/schemas/EfentoCoapDeviceTypeConfiguration' clientSettings: $ref: '#/components/schemas/PowerSavingConfiguration' CoapDeviceTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceTransportConfiguration' - type: object properties: powerMode: type: string enum: - PSM - DRX - E_DRX psmActivityTimer: type: integer format: int64 edrxCycle: type: integer format: int64 pagingTransmissionWindow: type: integer format: int64 CoapDeviceTypeConfiguration: discriminator: propertyName: coapDeviceType properties: coapDeviceType: type: string required: - coapDeviceType 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 ComplexFilterPredicate: allOf: - $ref: '#/components/schemas/KeyFilterPredicate' - type: object properties: operation: type: string enum: - AND - OR predicates: type: array items: {} - type: object properties: operation: type: string enum: - AND - OR predicates: type: array items: oneOf: - $ref: '#/components/schemas/BooleanFilterPredicate' - $ref: '#/components/schemas/ComplexFilterPredicate' - $ref: '#/components/schemas/NumericFilterPredicate' - $ref: '#/components/schemas/StringFilterPredicate' CustomTimeSchedule: allOf: - $ref: '#/components/schemas/AlarmSchedule' - type: object properties: timezone: type: string items: type: array items: $ref: '#/components/schemas/CustomTimeScheduleItem' CustomTimeScheduleItem: type: object properties: enabled: type: boolean dayOfWeek: type: integer format: int32 startsOn: type: integer format: int64 endsOn: type: integer format: int64 CustomerId: 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: - CUSTOMER example: CUSTOMER required: - entityType - id DashboardId: 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: - DASHBOARD example: DASHBOARD required: - entityType - id DefaultCoapDeviceTypeConfiguration: allOf: - $ref: '#/components/schemas/CoapDeviceTypeConfiguration' - type: object properties: transportPayloadTypeConfiguration: oneOf: - $ref: '#/components/schemas/JsonTransportPayloadConfiguration' - $ref: '#/components/schemas/ProtoTransportPayloadConfiguration' DefaultDeviceConfiguration: allOf: - $ref: '#/components/schemas/DeviceConfiguration' DefaultDeviceProfileConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileConfiguration' DefaultDeviceProfileTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileTransportConfiguration' DefaultDeviceTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceTransportConfiguration' Device: type: object properties: id: $ref: '#/components/schemas/DeviceId' description: JSON object with the Device Id. Specify this field to update the Device. Referencing non-existing Device Id will cause error. Omit this field to create new Device. createdTime: type: integer format: int64 description: Timestamp of the device creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. readOnly: true customerId: $ref: '#/components/schemas/CustomerId' description: JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. readOnly: true name: type: string description: Unique Device Name in scope of Tenant example: A4B72CCDFF33 type: type: string description: Device Profile Name example: Temperature Sensor label: type: string description: Label that may be used in widgets example: Room 234 Sensor deviceProfileId: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with Device Profile Id. firmwareId: $ref: '#/components/schemas/OtaPackageId' description: JSON object with Ota Package Id. softwareId: $ref: '#/components/schemas/OtaPackageId' description: JSON object with Ota Package Id. version: type: integer format: int64 additionalInfo: $ref: '#/components/schemas/JsonNode' description: Additional parameters of the device deviceData: $ref: '#/components/schemas/DeviceData' description: JSON object with content specific to type of transport in the device profile. required: - deviceProfileId - name DeviceConfiguration: discriminator: propertyName: type properties: type: type: string required: - type DeviceCredentials: type: object description: A JSON value representing the device credentials. properties: id: $ref: '#/components/schemas/DeviceCredentialsId' description: 'The Id is automatically generated during device creation. Use ''getDeviceCredentialsByDeviceId'' to obtain the id based on device id. Use ''updateDeviceCredentials'' to update device credentials. ' example: 784f394c-42b6-435a-983c-b7beff2784f9 readOnly: true createdTime: type: integer format: int64 description: Timestamp of the device credentials creation, in milliseconds example: 1609459200000 deviceId: $ref: '#/components/schemas/DeviceId' description: JSON object with the device Id. credentialsType: type: string description: Type of the credentials enum: - ACCESS_TOKEN - X509_CERTIFICATE - MQTT_BASIC - LWM2M_CREDENTIALS credentialsId: type: string description: Unique Credentials Id per platform instance. Used to lookup credentials from the database. By default, new access token for your device. Depends on the type of the credentials. example: Access token or other value that depends on the credentials type credentialsValue: type: string description: Value of the credentials. Null in case of ACCESS_TOKEN credentials type. Base64 value in case of X509_CERTIFICATE. Complex object in case of MQTT_BASIC and LWM2M_CREDENTIALS example: Null in case of ACCESS_TOKEN. See model definition. version: type: integer format: int64 required: - credentialsId - deviceId - id DeviceCredentialsId: type: object properties: id: type: string format: uuid description: string example: 784f394c-42b6-435a-983c-b7beff2784f9 required: - id DeviceData: type: object properties: configuration: description: Device configuration for device profile type. DEFAULT is only supported value for now oneOf: - $ref: '#/components/schemas/DefaultDeviceConfiguration' transportConfiguration: description: Device transport configuration used to connect the device oneOf: - $ref: '#/components/schemas/CoapDeviceTransportConfiguration' - $ref: '#/components/schemas/DefaultDeviceTransportConfiguration' - $ref: '#/components/schemas/Lwm2mDeviceTransportConfiguration' - $ref: '#/components/schemas/MqttDeviceTransportConfiguration' - $ref: '#/components/schemas/SnmpDeviceTransportConfiguration' DeviceId: 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: - DEVICE example: DEVICE required: - entityType - id DeviceInfo: type: object properties: id: $ref: '#/components/schemas/DeviceId' description: JSON object with the Device Id. Specify this field to update the Device. Referencing non-existing Device Id will cause error. Omit this field to create new Device. createdTime: type: integer format: int64 description: Timestamp of the device creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id. Use 'assignDeviceToTenant' to change the Tenant Id. readOnly: true customerId: $ref: '#/components/schemas/CustomerId' description: JSON object with Customer Id. Use 'assignDeviceToCustomer' to change the Customer Id. readOnly: true name: type: string description: Unique Device Name in scope of Tenant example: A4B72CCDFF33 type: type: string description: Device Profile Name example: Temperature Sensor label: type: string description: Label that may be used in widgets example: Room 234 Sensor deviceProfileId: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with Device Profile Id. firmwareId: $ref: '#/components/schemas/OtaPackageId' description: JSON object with Ota Package Id. softwareId: $ref: '#/components/schemas/OtaPackageId' description: JSON object with Ota Package Id. version: type: integer format: int64 customerTitle: type: string description: Title of the Customer that owns the device. readOnly: true customerIsPublic: type: boolean description: Indicates special 'Public' Customer that is auto-generated to use the devices on public dashboards. readOnly: true deviceProfileName: type: string description: Name of the corresponding Device Profile. readOnly: true active: type: boolean description: Device active flag. readOnly: true additionalInfo: $ref: '#/components/schemas/JsonNode' description: Additional parameters of the device deviceData: $ref: '#/components/schemas/DeviceData' description: JSON object with content specific to type of transport in the device profile. required: - deviceProfileId - name DeviceProfile: type: object description: A JSON value representing the device profile. properties: id: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with the device profile Id. Specify this field to update the device profile. Referencing non-existing device profile Id will cause error. Omit this field to create new device profile. createdTime: type: integer format: int64 description: Timestamp of the profile creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id that owns the profile. readOnly: true name: type: string description: Unique Device Profile Name in scope of Tenant. example: Moisture Sensor description: type: string description: 'Device Profile description. ' image: type: string description: 'Either URL or Base64 data of the icon. Used in the mobile application to visualize set of device profiles in the grid view. ' type: type: string description: Type of the profile. Always 'DEFAULT' for now. Reserved for future use. enum: - DEFAULT transportType: type: string description: Type of the transport used to connect the device. Default transport supports HTTP, CoAP and MQTT. enum: - DEFAULT - MQTT - COAP - LWM2M - SNMP provisionType: type: string description: Provisioning strategy. enum: - DISABLED - ALLOW_CREATE_NEW_DEVICES - CHECK_PRE_PROVISIONED_DEVICES - X509_CERTIFICATE_CHAIN defaultRuleChainId: $ref: '#/components/schemas/RuleChainId' description: Reference to the rule chain. If present, the specified rule chain will be used to process all messages related to device, including telemetry, attribute updates, etc. Otherwise, the root rule chain will be used to process those messages. defaultDashboardId: $ref: '#/components/schemas/DashboardId' description: Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details. defaultQueueName: type: string description: Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to device, including telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages. provisionDeviceKey: type: string description: Unique provisioning key used by 'Device Provisioning' feature. firmwareId: $ref: '#/components/schemas/OtaPackageId' description: 'Reference to the firmware OTA package. If present, the specified package will be used as default device firmware. ' softwareId: $ref: '#/components/schemas/OtaPackageId' description: 'Reference to the software OTA package. If present, the specified package will be used as default device software. ' defaultEdgeRuleChainId: $ref: '#/components/schemas/RuleChainId' description: Reference to the edge rule chain. If present, the specified edge rule chain will be used on the edge to process all messages related to device, including telemetry, attribute updates, etc. Otherwise, the edge root rule chain will be used to process those messages. version: type: integer format: int64 default: type: boolean description: Used to mark the default profile. Default profile is used when the device profile is not specified during device creation. profileData: $ref: '#/components/schemas/DeviceProfileData' description: Complex JSON object that includes addition device profile configuration (transport, alarm rules, etc). DeviceProfileAlarm: type: object properties: id: type: string description: String value representing the alarm rule id example: highTemperatureAlarmID alarmType: type: string description: String value representing type of the alarm example: High Temperature Alarm createRules: type: object additionalProperties: $ref: '#/components/schemas/AlarmRule' description: Complex JSON object representing create alarm rules. The unique create alarm rule can be created for each alarm severity type. There can be 5 create alarm rules configured per a single alarm type. See method implementation notes and AlarmRule model for more details clearRule: $ref: '#/components/schemas/AlarmRule' description: JSON object representing clear alarm rule propagate: type: boolean description: Propagation flag to specify if alarm should be propagated to parent entities of alarm originator example: true propagateToOwner: type: boolean description: Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator example: true propagateToTenant: type: boolean description: Propagation flag to specify if alarm should be propagated to the tenant entity example: true propagateRelationTypes: type: array description: JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. items: type: string DeviceProfileConfiguration: discriminator: propertyName: type properties: type: type: string required: - type DeviceProfileData: type: object properties: configuration: description: JSON object of device profile configuration oneOf: - $ref: '#/components/schemas/DefaultDeviceProfileConfiguration' transportConfiguration: description: JSON object of device profile transport configuration oneOf: - $ref: '#/components/schemas/CoapDeviceProfileTransportConfiguration' - $ref: '#/components/schemas/DefaultDeviceProfileTransportConfiguration' - $ref: '#/components/schemas/Lwm2mDeviceProfileTransportConfiguration' - $ref: '#/components/schemas/MqttDeviceProfileTransportConfiguration' - $ref: '#/components/schemas/SnmpDeviceProfileTransportConfiguration' provisionConfiguration: description: JSON object of provisioning strategy type per device profile oneOf: - $ref: '#/components/schemas/AllowCreateNewDevicesDeviceProfileProvisionConfiguration' - $ref: '#/components/schemas/CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration' - $ref: '#/components/schemas/DisabledDeviceProfileProvisionConfiguration' - $ref: '#/components/schemas/X509CertificateChainProvisionConfiguration' alarms: type: array description: JSON array of alarm rules configuration per device profile items: $ref: '#/components/schemas/DeviceProfileAlarm' DeviceProfileId: 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: - DEVICE_PROFILE example: DEVICE_PROFILE required: - entityType - id DeviceProfileInfo: type: object properties: id: $ref: '#/components/schemas/EntityId' description: 'JSON object with the entity Id. ' tenantId: $ref: '#/components/schemas/TenantId' description: Tenant id. name: type: string description: Entity Name image: type: string description: 'Either URL or Base64 data of the icon. Used in the mobile application to visualize set of device profiles in the grid view. ' defaultDashboardId: $ref: '#/components/schemas/DashboardId' description: Reference to the dashboard. Used in the mobile application to open the default dashboard when user navigates to device details. type: type: string description: Type of the profile. Always 'DEFAULT' for now. Reserved for future use. enum: - DEFAULT transportType: type: string description: Type of the transport used to connect the device. Default transport supports HTTP, CoAP and MQTT. enum: - DEFAULT - MQTT - COAP - LWM2M - SNMP DeviceProfileProvisionConfiguration: type: object discriminator: propertyName: type properties: provisionDeviceSecret: type: string type: type: string required: - type DeviceProfileTransportConfiguration: discriminator: propertyName: type properties: type: type: string required: - type DeviceSearchQuery: type: object description: The device search query JSON properties: parameters: $ref: '#/components/schemas/RelationsSearchParameters' description: Main search parameters. relationType: type: string description: Type of the relation between root entity and device (e.g. 'Contains' or 'Manages'). deviceTypes: type: array description: Array of device types to filter the related entities (e.g. 'Temperature Sensor', 'Smoke Sensor'). items: type: string DeviceTransportConfiguration: discriminator: propertyName: type properties: type: type: string required: - type DisabledDeviceProfileProvisionConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileProvisionConfiguration' DurationAlarmConditionSpec: allOf: - $ref: '#/components/schemas/AlarmConditionSpec' - type: object properties: unit: type: string enum: - NANOSECONDS - MICROSECONDS - MILLISECONDS - SECONDS - MINUTES - HOURS - DAYS predicate: $ref: '#/components/schemas/FilterPredicateValueLong' DynamicValueBoolean: type: object properties: sourceType: type: string enum: - CURRENT_TENANT - CURRENT_CUSTOMER - CURRENT_USER - CURRENT_DEVICE sourceAttribute: type: string inherit: type: boolean resolvedValue: type: boolean DynamicValueDouble: type: object properties: sourceType: type: string enum: - CURRENT_TENANT - CURRENT_CUSTOMER - CURRENT_USER - CURRENT_DEVICE sourceAttribute: type: string inherit: type: boolean resolvedValue: type: number format: double DynamicValueInteger: type: object properties: sourceType: type: string enum: - CURRENT_TENANT - CURRENT_CUSTOMER - CURRENT_USER - CURRENT_DEVICE sourceAttribute: type: string inherit: type: boolean resolvedValue: type: integer format: int32 DynamicValueLong: type: object properties: sourceType: type: string enum: - CURRENT_TENANT - CURRENT_CUSTOMER - CURRENT_USER - CURRENT_DEVICE sourceAttribute: type: string inherit: type: boolean resolvedValue: type: integer format: int64 DynamicValueString: type: object properties: sourceType: type: string enum: - CURRENT_TENANT - CURRENT_CUSTOMER - CURRENT_USER - CURRENT_DEVICE sourceAttribute: type: string inherit: type: boolean resolvedValue: type: string EfentoCoapDeviceTypeConfiguration: allOf: - $ref: '#/components/schemas/CoapDeviceTypeConfiguration' EntityId: 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 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 example: DEVICE required: - entityType - id EntityInfo: type: object properties: id: $ref: '#/components/schemas/EntityId' description: 'JSON object with the entity Id. ' name: type: string description: Entity Name 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 - QUEUE_STATS - OAUTH2_CLIENT - DOMAIN - MOBILE_APP - MOBILE_APP_BUNDLE - CALCULATED_FIELD - JOB - ADMIN_SETTINGS - AI_MODEL - API_KEY type: type: string FilterPredicateValueBoolean: type: object properties: defaultValue: type: boolean userValue: type: boolean dynamicValue: $ref: '#/components/schemas/DynamicValueBoolean' FilterPredicateValueDouble: type: object properties: defaultValue: type: number format: double userValue: type: number format: double dynamicValue: $ref: '#/components/schemas/DynamicValueDouble' FilterPredicateValueInteger: type: object properties: defaultValue: type: integer format: int32 userValue: type: integer format: int32 dynamicValue: $ref: '#/components/schemas/DynamicValueInteger' FilterPredicateValueLong: type: object properties: defaultValue: type: integer format: int64 userValue: type: integer format: int64 dynamicValue: $ref: '#/components/schemas/DynamicValueLong' FilterPredicateValueString: type: object properties: defaultValue: type: string userValue: type: string dynamicValue: $ref: '#/components/schemas/DynamicValueString' JsonNode: description: A value representing the any type (object or primitive) examples: - {} JsonTransportPayloadConfiguration: allOf: - $ref: '#/components/schemas/TransportPayloadTypeConfiguration' KeyFilterPredicate: discriminator: propertyName: type properties: type: type: string required: - type LwM2MBootstrapServerCredential: discriminator: propertyName: securityMode properties: securityMode: type: string required: - securityMode LwM2mVersion: type: object properties: supported: type: boolean Lwm2mDeviceProfileTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileTransportConfiguration' - type: object properties: observeAttr: $ref: '#/components/schemas/TelemetryMappingConfiguration' bootstrapServerUpdateEnable: type: boolean bootstrap: type: array items: oneOf: - $ref: '#/components/schemas/NoSecLwM2MBootstrapServerCredential' - $ref: '#/components/schemas/PSKLwM2MBootstrapServerCredential' - $ref: '#/components/schemas/RPKLwM2MBootstrapServerCredential' - $ref: '#/components/schemas/X509LwM2MBootstrapServerCredential' clientLwM2mSettings: $ref: '#/components/schemas/OtherConfiguration' Lwm2mDeviceTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceTransportConfiguration' - type: object properties: powerMode: type: string enum: - PSM - DRX - E_DRX psmActivityTimer: type: integer format: int64 edrxCycle: type: integer format: int64 pagingTransmissionWindow: type: integer format: int64 Mapping: type: object properties: columns: type: array items: $ref: '#/components/schemas/ColumnMapping' delimiter: type: string update: type: boolean header: type: boolean MqttDeviceProfileTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileTransportConfiguration' - type: object properties: deviceTelemetryTopic: type: string deviceAttributesTopic: type: string deviceAttributesSubscribeTopic: type: string transportPayloadTypeConfiguration: oneOf: - $ref: '#/components/schemas/JsonTransportPayloadConfiguration' - $ref: '#/components/schemas/ProtoTransportPayloadConfiguration' sparkplug: type: boolean sparkplugAttributesMetricNames: type: array items: type: string uniqueItems: true sendAckOnValidationException: type: boolean MqttDeviceTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceTransportConfiguration' NoSecLwM2MBootstrapServerCredential: allOf: - $ref: '#/components/schemas/LwM2MBootstrapServerCredential' - type: object properties: shortServerId: type: integer format: int32 description: Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. example: 123 readOnly: true bootstrapServerIs: type: boolean description: Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. example: true readOnly: true host: type: string description: Host for 'No Security' mode example: 0.0.0.0 readOnly: true port: type: integer format: int32 description: 'Port for Lwm2m Server: ''No Security'' mode: Lwm2m Server or Bootstrap Server' example: '''5685'' or ''5687''' readOnly: true clientHoldOffTime: type: integer format: int32 description: Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) example: 1 readOnly: true serverPublicKey: type: string description: 'Server Public Key for ''Security'' mode (DTLS): RPK or X509. Format: base64 encoded' example: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat +44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==' readOnly: true serverCertificate: type: string description: 'Server Public Key for ''Security'' mode (DTLS): X509. Format: base64 encoded' example: 'MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs xEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM JbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/ BAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp AWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=' readOnly: true bootstrapServerAccountTimeout: type: integer format: int32 description: Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) example: 0 readOnly: true lifetime: type: integer format: int32 description: Specify the lifetime of the registration in seconds. example: 300 readOnly: true defaultMinPeriod: type: integer format: int32 description: "The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn\u2019\ t exist, the default value is 0." example: 1 readOnly: true notifIfDisabled: type: boolean description: "If true, the LwM2M Client stores \u201CNotify\u201D operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server\ \ account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored \u201CNotify\u201D operations to the Server. If false, the LwM2M Client discards all the \u201CNotify\u201D\ \ operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true." example: true readOnly: true binding: type: string description: This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. example: U readOnly: true NumericFilterPredicate: allOf: - $ref: '#/components/schemas/KeyFilterPredicate' - type: object properties: operation: type: string enum: - EQUAL - NOT_EQUAL - GREATER - LESS - GREATER_OR_EQUAL - LESS_OR_EQUAL value: $ref: '#/components/schemas/FilterPredicateValueDouble' ObjectAttributes: type: object properties: dim: type: integer format: int64 ssid: type: integer format: int64 uri: type: string ver: $ref: '#/components/schemas/Version' lwm2m: $ref: '#/components/schemas/LwM2mVersion' pmin: type: integer format: int64 pmax: type: integer format: int64 gt: type: number format: double lt: type: number format: double st: type: number format: double epmin: type: integer format: int64 epmax: type: integer format: int64 OtaPackage: type: object properties: id: $ref: '#/components/schemas/OtaPackageId' description: JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package. createdTime: type: integer format: int64 description: Timestamp of the ota package creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id. Tenant Id of the ota package can't be changed. readOnly: true deviceProfileId: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed. readOnly: true type: type: string description: OTA Package type. enum: - FIRMWARE - SOFTWARE example: FIRMWARE readOnly: true title: type: string description: OTA Package title. example: fw readOnly: true version: type: string description: OTA Package version. example: 1.0 readOnly: true tag: type: string description: OTA Package tag. example: fw_1.0 readOnly: true url: type: string description: OTA Package url. example: http://thingsboard.org/fw/1 readOnly: true hasData: type: boolean description: Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile. example: true readOnly: true fileName: type: string description: OTA Package file name. example: fw_1.0 readOnly: true contentType: type: string description: OTA Package content type. example: APPLICATION_OCTET_STREAM readOnly: true checksumAlgorithm: type: string description: OTA Package checksum algorithm. enum: - MD5 - SHA256 - SHA384 - SHA512 - CRC32 - MURMUR3_32 - MURMUR3_128 example: CRC32 readOnly: true checksum: type: string description: OTA Package checksum. example: '0xd87f7e0c' readOnly: true dataSize: type: integer format: int64 description: OTA Package data size. example: 8 readOnly: true data: type: object properties: short: type: integer format: int32 char: type: string int: type: integer format: int32 long: type: integer format: int64 float: type: number format: float double: type: number format: double direct: type: boolean readOnly: type: boolean name: type: string readOnly: true additionalInfo: $ref: '#/components/schemas/JsonNode' description: OTA Package description. example: Description for the OTA Package fw_1.0 OtaPackageId: 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: - OTA_PACKAGE example: OTA_PACKAGE required: - entityType - id OtaPackageInfo: type: object properties: id: $ref: '#/components/schemas/OtaPackageId' description: JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package. createdTime: type: integer format: int64 description: Timestamp of the ota package creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id. Tenant Id of the ota package can't be changed. readOnly: true deviceProfileId: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed. readOnly: true type: type: string description: OTA Package type. enum: - FIRMWARE - SOFTWARE example: FIRMWARE readOnly: true title: type: string description: OTA Package title. example: fw readOnly: true version: type: string description: OTA Package version. example: 1.0 readOnly: true tag: type: string description: OTA Package tag. example: fw_1.0 readOnly: true url: type: string description: OTA Package url. example: http://thingsboard.org/fw/1 readOnly: true hasData: type: boolean description: Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile. example: true readOnly: true fileName: type: string description: OTA Package file name. example: fw_1.0 readOnly: true contentType: type: string description: OTA Package content type. example: APPLICATION_OCTET_STREAM readOnly: true checksumAlgorithm: type: string description: OTA Package checksum algorithm. enum: - MD5 - SHA256 - SHA384 - SHA512 - CRC32 - MURMUR3_32 - MURMUR3_128 example: CRC32 readOnly: true checksum: type: string description: OTA Package checksum. example: '0xd87f7e0c' readOnly: true dataSize: type: integer format: int64 description: OTA Package data size. example: 8 readOnly: true name: type: string readOnly: true additionalInfo: $ref: '#/components/schemas/JsonNode' description: OTA Package description. example: Description for the OTA Package fw_1.0 OtherConfiguration: type: object properties: useObject19ForOtaInfo: type: boolean fwUpdateStrategy: type: integer format: int32 swUpdateStrategy: type: integer format: int32 clientOnlyObserveAfterConnect: type: integer format: int32 powerMode: type: string enum: - PSM - DRX - E_DRX psmActivityTimer: type: integer format: int64 edrxCycle: type: integer format: int64 pagingTransmissionWindow: type: integer format: int64 fwUpdateResource: type: string swUpdateResource: type: string defaultObjectIDVer: type: string PSKLwM2MBootstrapServerCredential: allOf: - $ref: '#/components/schemas/LwM2MBootstrapServerCredential' - type: object properties: shortServerId: type: integer format: int32 description: Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. example: 123 readOnly: true bootstrapServerIs: type: boolean description: Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. example: true readOnly: true host: type: string description: Host for 'No Security' mode example: 0.0.0.0 readOnly: true port: type: integer format: int32 description: 'Port for Lwm2m Server: ''No Security'' mode: Lwm2m Server or Bootstrap Server' example: '''5685'' or ''5687''' readOnly: true clientHoldOffTime: type: integer format: int32 description: Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) example: 1 readOnly: true serverPublicKey: type: string description: 'Server Public Key for ''Security'' mode (DTLS): RPK or X509. Format: base64 encoded' example: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat +44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==' readOnly: true serverCertificate: type: string description: 'Server Public Key for ''Security'' mode (DTLS): X509. Format: base64 encoded' example: 'MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs xEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM JbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/ BAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp AWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=' readOnly: true bootstrapServerAccountTimeout: type: integer format: int32 description: Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) example: 0 readOnly: true lifetime: type: integer format: int32 description: Specify the lifetime of the registration in seconds. example: 300 readOnly: true defaultMinPeriod: type: integer format: int32 description: "The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn\u2019\ t exist, the default value is 0." example: 1 readOnly: true notifIfDisabled: type: boolean description: "If true, the LwM2M Client stores \u201CNotify\u201D operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server\ \ account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored \u201CNotify\u201D operations to the Server. If false, the LwM2M Client discards all the \u201CNotify\u201D\ \ operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true." example: true readOnly: true binding: type: string description: This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. example: U readOnly: true PageDataDevice: type: object properties: data: type: array description: Array of the entities items: $ref: '#/components/schemas/Device' readOnly: true totalPages: type: integer format: int32 description: Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria readOnly: true totalElements: type: integer format: int64 description: Total number of elements in all available pages readOnly: true hasNext: type: boolean description: '''false'' value indicates the end of the result set' readOnly: true PageDataDeviceInfo: type: object properties: data: type: array description: Array of the entities items: $ref: '#/components/schemas/DeviceInfo' readOnly: true totalPages: type: integer format: int32 description: Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria readOnly: true totalElements: type: integer format: int64 description: Total number of elements in all available pages readOnly: true hasNext: type: boolean description: '''false'' value indicates the end of the result set' readOnly: true PageDataDeviceProfile: type: object properties: data: type: array description: Array of the entities items: $ref: '#/components/schemas/DeviceProfile' readOnly: true totalPages: type: integer format: int32 description: Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria readOnly: true totalElements: type: integer format: int64 description: Total number of elements in all available pages readOnly: true hasNext: type: boolean description: '''false'' value indicates the end of the result set' readOnly: true PageDataDeviceProfileInfo: type: object properties: data: type: array description: Array of the entities items: $ref: '#/components/schemas/DeviceProfileInfo' readOnly: true totalPages: type: integer format: int32 description: Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria readOnly: true totalElements: type: integer format: int64 description: Total number of elements in all available pages readOnly: true hasNext: type: boolean description: '''false'' value indicates the end of the result set' readOnly: true PageDataOtaPackageInfo: type: object properties: data: type: array description: Array of the entities items: $ref: '#/components/schemas/OtaPackageInfo' readOnly: true totalPages: type: integer format: int32 description: Total number of available pages. Calculated based on the 'pageSize' request parameter and total number of entities that match search criteria readOnly: true totalElements: type: integer format: int64 description: Total number of elements in all available pages readOnly: true hasNext: type: boolean description: '''false'' value indicates the end of the result set' readOnly: true PowerSavingConfiguration: type: object properties: powerMode: type: string enum: - PSM - DRX - E_DRX psmActivityTimer: type: integer format: int64 edrxCycle: type: integer format: int64 pagingTransmissionWindow: type: integer format: int64 ProtoTransportPayloadConfiguration: allOf: - $ref: '#/components/schemas/TransportPayloadTypeConfiguration' - type: object properties: deviceTelemetryProtoSchema: type: string deviceAttributesProtoSchema: type: string deviceRpcRequestProtoSchema: type: string deviceRpcResponseProtoSchema: type: string enableCompatibilityWithJsonPayloadFormat: type: boolean useJsonPayloadFormatForDefaultDownlinkTopics: type: boolean RPKLwM2MBootstrapServerCredential: allOf: - $ref: '#/components/schemas/LwM2MBootstrapServerCredential' - type: object properties: shortServerId: type: integer format: int32 description: Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. example: 123 readOnly: true bootstrapServerIs: type: boolean description: Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. example: true readOnly: true host: type: string description: Host for 'No Security' mode example: 0.0.0.0 readOnly: true port: type: integer format: int32 description: 'Port for Lwm2m Server: ''No Security'' mode: Lwm2m Server or Bootstrap Server' example: '''5685'' or ''5687''' readOnly: true clientHoldOffTime: type: integer format: int32 description: Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) example: 1 readOnly: true serverPublicKey: type: string description: 'Server Public Key for ''Security'' mode (DTLS): RPK or X509. Format: base64 encoded' example: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat +44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==' readOnly: true serverCertificate: type: string description: 'Server Public Key for ''Security'' mode (DTLS): X509. Format: base64 encoded' example: 'MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs xEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM JbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/ BAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp AWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=' readOnly: true bootstrapServerAccountTimeout: type: integer format: int32 description: Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) example: 0 readOnly: true lifetime: type: integer format: int32 description: Specify the lifetime of the registration in seconds. example: 300 readOnly: true defaultMinPeriod: type: integer format: int32 description: "The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn\u2019\ t exist, the default value is 0." example: 1 readOnly: true notifIfDisabled: type: boolean description: "If true, the LwM2M Client stores \u201CNotify\u201D operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server\ \ account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored \u201CNotify\u201D operations to the Server. If false, the LwM2M Client discards all the \u201CNotify\u201D\ \ operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true." example: true readOnly: true binding: type: string description: This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. example: U readOnly: true 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. RepeatingAlarmConditionSpec: allOf: - $ref: '#/components/schemas/AlarmConditionSpec' - type: object properties: predicate: $ref: '#/components/schemas/FilterPredicateValueInteger' RuleChainId: 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: - RULE_CHAIN example: RULE_CHAIN required: - entityType - id SaveDeviceWithCredentialsRequest: type: object description: The JSON object with device and credentials. See method description above for example. properties: device: $ref: '#/components/schemas/Device' description: The JSON with device entity. credentials: $ref: '#/components/schemas/DeviceCredentials' description: The JSON with credentials entity. required: - credentials - device SaveOtaPackageInfoRequest: type: object description: A JSON value representing the OTA Package. properties: id: $ref: '#/components/schemas/OtaPackageId' description: JSON object with the ota package Id. Specify existing ota package Id to update the ota package. Referencing non-existing ota package id will cause error. Omit this field to create new ota package. createdTime: type: integer format: int64 description: Timestamp of the ota package creation, in milliseconds example: 1609459200000 readOnly: true tenantId: $ref: '#/components/schemas/TenantId' description: JSON object with Tenant Id. Tenant Id of the ota package can't be changed. readOnly: true deviceProfileId: $ref: '#/components/schemas/DeviceProfileId' description: JSON object with Device Profile Id. Device Profile Id of the ota package can't be changed. readOnly: true type: type: string description: OTA Package type. enum: - FIRMWARE - SOFTWARE example: FIRMWARE readOnly: true title: type: string description: OTA Package title. example: fw readOnly: true version: type: string description: OTA Package version. example: 1.0 readOnly: true tag: type: string description: OTA Package tag. example: fw_1.0 readOnly: true url: type: string description: OTA Package url. example: http://thingsboard.org/fw/1 readOnly: true hasData: type: boolean description: Indicates OTA Package 'has data'. Field is returned from DB ('true' if data exists or url is set). If OTA Package 'has data' is 'false' we can not assign the OTA Package to the Device or Device Profile. example: true readOnly: true fileName: type: string description: OTA Package file name. example: fw_1.0 readOnly: true contentType: type: string description: OTA Package content type. example: APPLICATION_OCTET_STREAM readOnly: true checksumAlgorithm: type: string description: OTA Package checksum algorithm. enum: - MD5 - SHA256 - SHA384 - SHA512 - CRC32 - MURMUR3_32 - MURMUR3_128 example: CRC32 readOnly: true checksum: type: string description: OTA Package checksum. example: '0xd87f7e0c' readOnly: true dataSize: type: integer format: int64 description: OTA Package data size. example: 8 readOnly: true usesUrl: type: boolean description: Indicates OTA Package uses url. Should be 'true' if uses url or 'false' if will be used data. example: true readOnly: true name: type: string readOnly: true additionalInfo: $ref: '#/components/schemas/JsonNode' description: OTA Package description. example: Description for the OTA Package fw_1.0 SharedAttributesSettingSnmpCommunicationConfig: allOf: - $ref: '#/components/schemas/SnmpCommunicationConfig' - type: object properties: mappings: type: array items: $ref: '#/components/schemas/SnmpMapping' SimpleAlarmConditionSpec: allOf: - $ref: '#/components/schemas/AlarmConditionSpec' SnmpCommunicationConfig: type: object discriminator: propertyName: spec properties: spec: type: string enum: - TELEMETRY_QUERYING - CLIENT_ATTRIBUTES_QUERYING - SHARED_ATTRIBUTES_SETTING - TO_DEVICE_RPC_REQUEST - TO_SERVER_RPC_REQUEST SnmpDeviceProfileTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileTransportConfiguration' - type: object properties: timeoutMs: type: integer format: int32 retries: type: integer format: int32 communicationConfigs: type: array items: oneOf: - $ref: '#/components/schemas/ClientAttributesQueryingSnmpCommunicationConfig' - $ref: '#/components/schemas/SharedAttributesSettingSnmpCommunicationConfig' - $ref: '#/components/schemas/TelemetryQueryingSnmpCommunicationConfig' - $ref: '#/components/schemas/ToDeviceRpcRequestSnmpCommunicationConfig' - $ref: '#/components/schemas/ToServerRpcRequestSnmpCommunicationConfig' SnmpDeviceTransportConfiguration: allOf: - $ref: '#/components/schemas/DeviceTransportConfiguration' - type: object properties: host: type: string port: type: integer format: int32 protocolVersion: type: string enum: - V1 - V2C - V3 community: type: string username: type: string securityName: type: string contextName: type: string authenticationProtocol: type: string enum: - SHA_1 - SHA_224 - SHA_256 - SHA_384 - SHA_512 - MD5 authenticationPassphrase: type: string privacyProtocol: type: string enum: - DES - AES_128 - AES_192 - AES_256 privacyPassphrase: type: string engineId: type: string SnmpMapping: type: object properties: oid: type: string key: type: string dataType: type: string enum: - BOOLEAN - LONG - DOUBLE - STRING - JSON SpecificTimeSchedule: allOf: - $ref: '#/components/schemas/AlarmSchedule' - type: object properties: timezone: type: string daysOfWeek: type: array items: type: integer format: int32 uniqueItems: true startsOn: type: integer format: int64 endsOn: type: integer format: int64 StringFilterPredicate: allOf: - $ref: '#/components/schemas/KeyFilterPredicate' - type: object properties: operation: type: string enum: - EQUAL - NOT_EQUAL - STARTS_WITH - ENDS_WITH - CONTAINS - NOT_CONTAINS - IN - NOT_IN value: $ref: '#/components/schemas/FilterPredicateValueString' ignoreCase: type: boolean TelemetryMappingConfiguration: type: object properties: keyName: type: object additionalProperties: type: string observe: type: array items: type: string uniqueItems: true attribute: type: array items: type: string uniqueItems: true telemetry: type: array items: type: string uniqueItems: true attributeLwm2m: type: object additionalProperties: $ref: '#/components/schemas/ObjectAttributes' initAttrTelAsObsStrategy: type: boolean observeStrategy: type: string enum: - 'SINGLE (0): One resource equals one single observe request' - 'COMPOSITE_ALL (1): All resources in one composite observe request' - 'COMPOSITE_BY_OBJECT (2): Grouped composite observe requests by object' TelemetryQueryingSnmpCommunicationConfig: allOf: - $ref: '#/components/schemas/SnmpCommunicationConfig' - type: object properties: mappings: type: array items: $ref: '#/components/schemas/SnmpMapping' queryingFrequencyMs: type: integer format: int64 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 ToDeviceRpcRequestSnmpCommunicationConfig: allOf: - $ref: '#/components/schemas/SnmpCommunicationConfig' - type: object properties: mappings: type: array items: $ref: '#/components/schemas/SnmpMapping' ToServerRpcRequestSnmpCommunicationConfig: allOf: - $ref: '#/components/schemas/SnmpCommunicationConfig' - type: object properties: mappings: type: array items: $ref: '#/components/schemas/SnmpMapping' TransportPayloadTypeConfiguration: discriminator: propertyName: transportPayloadType properties: transportPayloadType: type: string required: - transportPayloadType Version: {} X509CertificateChainProvisionConfiguration: allOf: - $ref: '#/components/schemas/DeviceProfileProvisionConfiguration' - type: object properties: certificateRegExPattern: type: string allowCreateNewDevicesByX509Certificate: type: boolean X509LwM2MBootstrapServerCredential: allOf: - $ref: '#/components/schemas/LwM2MBootstrapServerCredential' - type: object properties: shortServerId: type: integer format: int32 description: Server short Id. Used as link to associate server Object Instance. This identifier uniquely identifies each LwM2M Server configured for the LwM2M Client. This Resource MUST be set when the Bootstrap-Server Resource has a value of 'false'. The values ID:0 and ID:65535 values MUST NOT be used for identifying the LwM2M Server. example: 123 readOnly: true bootstrapServerIs: type: boolean description: Is Bootstrap Server or Lwm2m Server. The LwM2M Client MAY be configured to use one or more LwM2M Server Account(s). The LwM2M Client MUST have at most one LwM2M Bootstrap-Server Account. (*) The LwM2M client MUST have at least one LwM2M server account after completing the boot sequence specified. example: true readOnly: true host: type: string description: Host for 'No Security' mode example: 0.0.0.0 readOnly: true port: type: integer format: int32 description: 'Port for Lwm2m Server: ''No Security'' mode: Lwm2m Server or Bootstrap Server' example: '''5685'' or ''5687''' readOnly: true clientHoldOffTime: type: integer format: int32 description: Client Hold Off Time. The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode. (This information is relevant for use with a Bootstrap-Server only.) example: 1 readOnly: true serverPublicKey: type: string description: 'Server Public Key for ''Security'' mode (DTLS): RPK or X509. Format: base64 encoded' example: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAZ0pSaGKHk/GrDaUDnQZpeEdGwX7m3Ws+U/kiVat +44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==' readOnly: true serverCertificate: type: string description: 'Server Public Key for ''Security'' mode (DTLS): X509. Format: base64 encoded' example: 'MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs xEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM JbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/ BAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp AWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+7XmIXNClmizNJigj908mw=' readOnly: true bootstrapServerAccountTimeout: type: integer format: int32 description: Bootstrap Server Account Timeout (If the value is set to 0, or if this resource is not instantiated, the Bootstrap-Server Account lifetime is infinite.) example: 0 readOnly: true lifetime: type: integer format: int32 description: Specify the lifetime of the registration in seconds. example: 300 readOnly: true defaultMinPeriod: type: integer format: int32 description: "The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation. If this Resource doesn\u2019\ t exist, the default value is 0." example: 1 readOnly: true notifIfDisabled: type: boolean description: "If true, the LwM2M Client stores \u201CNotify\u201D operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server\ \ account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored \u201CNotify\u201D operations to the Server. If false, the LwM2M Client discards all the \u201CNotify\u201D\ \ operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline. The default value is true." example: true readOnly: true binding: type: string description: This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. example: U readOnly: true 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 ** Example: **ApiKey tb_5te51SkLRYpjGrujUGwqkjFvooWBlQpVe2An2Dr3w13wjfxDW**
**NOTE**: Use only ONE authentication method at a time. If both are authorized, JWT auth takes the priority.
' name: X-Authorization in: header