{"openapi":"3.1.0","info":{"title":"ThingsBoard REST API","description":" ThingsBoard open-source IoT platform REST API documentation.","contact":{"name":"ThingsBoard team","url":"https://thingsboard.io","email":"info@thingsboard.io"},"license":{"name":"Apache License Version 2.0","url":"https://github.com/thingsboard/thingsboard/blob/master/LICENSE"},"version":"4.3.0.3DEMO"},"servers":[{"url":"https://demo.thingsboard.io","description":"Generated server url"}],"paths":{"/api/auth/login":{"post":{"tags":["login-endpoint"],"summary":"Login method to get user JWT token data","description":"Login method used to authenticate user and get JWT token data.\n\nValue of the response **token** field can be used as **X-Authorization** header value:\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`.","requestBody":{"description":"Login request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingsboardErrorResponse"},"examples":{"account-disabled":{"summary":"Disabled account","value":{"status":401,"message":"User account is not active","errorCode":10,"timestamp":1770209248175}},"bad-credentials":{"summary":"Bad credentials","value":{"status":401,"message":"Invalid username or password","errorCode":10,"timestamp":1770209248175}},"account-locked":{"summary":"Locked account","value":{"status":401,"message":"User account is locked due to security policy","errorCode":10,"timestamp":1770209248175}},"token-expired":{"summary":"JWT token expired","value":{"status":401,"message":"Token has expired","errorCode":11,"timestamp":1770209248175}},"authentication-failed":{"summary":"General authentication error","value":{"status":401,"message":"Authentication failed","errorCode":10,"timestamp":1770209248175}}}}}},"401 ":{"description":"Unauthorized (**Expired credentials**)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingsboardCredentialsExpiredResponse"},"examples":{"credentials-expired":{"summary":"Expired credentials","value":{"status":401,"message":"User password expired!","errorCode":15,"timestamp":1770209248182,"resetToken":"59B5IkNuDrCyn98QB8LJ1sWFzwA03A"}}}}}}}}},"/api/auth/token":{"post":{"tags":["login-endpoint"],"summary":"Refresh user JWT token data","description":"Method to refresh JWT token. Provide a valid refresh token to get a new JWT token.\n\nThe response contains a new token that can be used for authorization.\n\n`X-Authorization: Bearer $JWT_TOKEN_VALUE`","requestBody":{"description":"Refresh token request","content":{"application/json":{"schema":{"properties":{"refreshToken":{}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingsboardErrorResponse"},"examples":{"account-disabled":{"summary":"Disabled account","value":{"status":401,"message":"User account is not active","errorCode":10,"timestamp":1770209248175}},"bad-credentials":{"summary":"Bad credentials","value":{"status":401,"message":"Invalid username or password","errorCode":10,"timestamp":1770209248175}},"account-locked":{"summary":"Locked account","value":{"status":401,"message":"User account is locked due to security policy","errorCode":10,"timestamp":1770209248175}},"token-expired":{"summary":"JWT token expired","value":{"status":401,"message":"Token has expired","errorCode":11,"timestamp":1770209248175}},"authentication-failed":{"summary":"General authentication error","value":{"status":401,"message":"Authentication failed","errorCode":10,"timestamp":1770209248175}}}}}},"401 ":{"description":"Unauthorized (**Expired credentials**)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingsboardCredentialsExpiredResponse"},"examples":{"credentials-expired":{"summary":"Expired credentials","value":{"status":401,"message":"User password expired!","errorCode":15,"timestamp":1770209248182,"resetToken":"59B5IkNuDrCyn98QB8LJ1sWFzwA03A"}}}}}}}}},"/api/user/settings":{"get":{"tags":["user-controller"],"summary":"Get user settings (getUserSettings)","description":"Fetch the User settings based on authorized user. ","operationId":"getUserSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}},"put":{"tags":["user-controller"],"summary":"Update user settings (saveUserSettings)","description":"Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}","operationId":"putUserSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"200":{"description":"OK"}}},"post":{"tags":["user-controller"],"summary":"Save user settings (saveUserSettings)","description":"Save user settings represented in json format for authorized user. ","operationId":"saveUserSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/user/settings/{type}":{"get":{"tags":["user-controller"],"summary":"Get user settings (getUserSettings)","description":"Fetch the User settings based on authorized user. ","operationId":"getUserSettings_1","parameters":[{"name":"type","in":"path","description":"Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}},"put":{"tags":["user-controller"],"summary":"Update user settings (saveUserSettings)","description":"Update user settings for authorized user. Only specified json elements will be updated.Example: you have such settings: {A:5, B:{C:10, D:20}}. Updating it with {B:{C:10, D:30}} will result in{A:5, B:{C:10, D:30}}. The same could be achieved by putting {B.D:30}","operationId":"putUserSettings_1","parameters":[{"name":"type","in":"path","description":"Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/resource/{id}/info":{"put":{"tags":["tb-resource-controller"],"operationId":"updateResourceInfo","parameters":[{"name":"id","in":"path","description":"Unique identifier of the Resource to update","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/resource/{id}/data":{"put":{"tags":["tb-resource-controller"],"operationId":"updateResourceData","parameters":[{"name":"id","in":"path","description":"Unique identifier of the Resource to update","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Resource file."}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/notifications/read":{"put":{"tags":["notification-controller"],"summary":"Mark all notifications as read (markAllNotificationsAsRead)","description":"Marks all unread notifications as read.\n\nAvailable for any authorized user. ","operationId":"markAllNotificationsAsRead","parameters":[{"name":"deliveryMethod","in":"query","description":"Delivery method","required":false,"schema":{"type":"string","enum":["WEB","MOBILE_APP"]}}],"responses":{"200":{"description":"OK"}}}},"/api/notification/{id}/read":{"put":{"tags":["notification-controller"],"summary":"Mark notification as read (markNotificationAsRead)","description":"Marks notification as read by its id.\n\nAvailable for any authorized user. ","operationId":"markNotificationAsRead","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/mobile/bundle/{id}/oauth2Clients":{"put":{"tags":["mobile-app-bundle-controller"],"summary":"Update oauth2 clients (updateOauth2Clients)","description":"Update oauth2 clients of the specified mobile app bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"updateOauth2Clients","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/images/{type}/{key}":{"get":{"tags":["image-controller"],"operationId":"downloadImage","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"image/*":{"schema":{"type":"string","format":"binary"}}}}}},"put":{"tags":["image-controller"],"operationId":"updateImage","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}},"delete":{"tags":["image-controller"],"operationId":"deleteImage","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbImageDeleteResult"}}}}}}},"/api/images/{type}/{key}/public/{isPublic}":{"put":{"tags":["image-controller"],"operationId":"updateImagePublicStatus","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}},{"name":"isPublic","in":"path","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/images/{type}/{key}/info":{"get":{"tags":["image-controller"],"operationId":"getImageInfo","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}},"put":{"tags":["image-controller"],"operationId":"updateImageInfo","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/image/import":{"put":{"tags":["image-controller"],"operationId":"importImage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceExportData"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/domain/{id}/oauth2Clients":{"put":{"tags":["domain-controller"],"summary":"Update oauth2 clients (updateOauth2Clients)","description":"Update oauth2 clients for the specified domain. ","operationId":"updateOauth2Clients_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/apiKey/{id}/enabled/{enabledValue}":{"put":{"tags":["api-key-controller"],"summary":"Enable or disable API key (enableApiKey)","description":"Updates api key with enabled = true/false. \n\nAvailable for any authorized user. ","operationId":"enableApiKey","parameters":[{"name":"id","in":"path","description":"Unique identifier of the API key to enable/disable","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"enabledValue","in":"path","description":"Enabled or disabled api key","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyInfo"}}}}}}},"/api/apiKey/{id}/description":{"put":{"tags":["api-key-controller"],"summary":"Update API key Description","description":"Updates the description of the existing API key by apiKeyId. Only the description can be updated. Referencing a non-existing ApiKey Id will cause a 'Not Found' error.\n\nAvailable for any authorized user. ","operationId":"updateApiKeyDescription","parameters":[{"name":"id","in":"path","description":"A string value representing the api key id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"New description for the API key"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyInfo"}}}}}}},"/api/2fa/account/config":{"put":{"tags":["two-factor-auth-config-controller"],"summary":"Update 2FA account config (updateTwoFaAccountConfig)","description":"Update config for a given provider type. \nUpdate request example:\n```\n{\n  \"useByDefault\": true\n}\n```\nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ","operationId":"updateTwoFaAccountConfig","parameters":[{"name":"providerType","in":"query","required":true,"schema":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFaAccountConfigUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTwoFaSettings"}}}}}},"post":{"tags":["two-factor-auth-config-controller"],"summary":"Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig)","description":"Checks the verification code for submitted config, and if it is correct, saves the provided account config. \n\nReturns whole account's 2FA settings object.\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ","operationId":"verifyAndSaveTwoFaAccountConfig","parameters":[{"name":"verificationCode","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BackupCodeTwoFaAccountConfig"},{"$ref":"#/components/schemas/EmailTwoFaAccountConfig"},{"$ref":"#/components/schemas/SmsTwoFaAccountConfig"},{"$ref":"#/components/schemas/TotpTwoFaAccountConfig"}]}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTwoFaSettings"}}}}}},"delete":{"tags":["two-factor-auth-config-controller"],"summary":"Delete 2FA account config (deleteTwoFaAccountConfig)","description":"Delete 2FA config for a given 2FA provider type. \nReturns whole account's 2FA settings object.\n\n\nAvailable for any authorized user. ","operationId":"deleteTwoFaAccountConfig","parameters":[{"name":"providerType","in":"query","required":true,"schema":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTwoFaSettings"}}}}}}},"/api/widgetsBundle":{"post":{"tags":["widgets-bundle-controller"],"summary":"Create Or Update Widget Bundle (saveWidgetsBundle)","description":"Create or update the Widget Bundle. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case.  When creating the bundle, platform generates Widget Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Bundle Id will be present in the response. Specify existing Widget Bundle id to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause 'Not Found' error.\n\nWidget Bundle alias is unique in the scope of tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create bundle request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' from the request body example (below) to create new Widgets Bundle entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveWidgetsBundle","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetsBundle"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetsBundle"}}}}}}},"/api/widgetsBundle/{widgetsBundleId}/widgetTypes":{"post":{"tags":["widgets-bundle-controller"],"summary":"Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes)","description":"Updates widgets bundle widgets list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"updateWidgetsBundleWidgetTypes","parameters":[{"name":"widgetsBundleId","in":"path","description":"A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"Ordered list of widget type Ids to be included by widgets bundle","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/widgetsBundle/{widgetsBundleId}/widgetTypeFqns":{"post":{"tags":["widgets-bundle-controller"],"summary":"Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns)","description":"Updates widgets bundle widgets list from widget type FQNs list.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"updateWidgetsBundleWidgetFqns","parameters":[{"name":"widgetsBundleId","in":"path","description":"A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"Ordered list of widget type FQNs to be included by widgets bundle","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/widgetType":{"get":{"tags":["widget-type-controller"],"summary":"Get Widget Type (getWidgetType)","description":"Get the Widget Type by FQN. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory.\n\nAvailable for any authorized user. ","operationId":"getWidgetTypeByBundleAliasAndTypeAlias","parameters":[{"name":"isSystem","in":"query","description":"System or Tenant","required":true,"schema":{"type":"boolean"}},{"name":"bundleAlias","in":"query","description":"Widget Bundle alias","required":true,"schema":{"type":"string"}},{"name":"alias","in":"query","description":"Widget Type alias","required":true,"schema":{"type":"string"}},{"name":"fqn","in":"query","description":"Widget Type fqn","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetType"}}}}},"deprecated":true},"post":{"tags":["widget-type-controller"],"summary":"Create Or Update Widget Type (saveWidgetType)","description":"Create or update the Widget Type. Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. When creating the Widget Type, platform generates Widget Type Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Widget Type Id will be present in the response. Specify existing Widget Type id to update the Widget Type. Referencing non-existing Widget Type Id will cause 'Not Found' error.\n\nWidget Type fqn is unique in the scope of System or Tenant. Special Tenant Id '13814000-1dd2-11b2-8080-808080808080' is automatically used if the create request is sent by user with 'SYS_ADMIN' authority.Remove 'id', 'tenantId' rom the request body example (below) to create new Widget Type entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveWidgetType","parameters":[{"name":"updateExistingByFqn","in":"query","description":"Optional boolean parameter indicating whether to update existing widget type by FQN if present instead of creating new one","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetTypeDetails"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetTypeDetails"}}}}}}},"/api/v2/relation":{"post":{"tags":["entity-relation-controller"],"summary":"Create Relation (saveRelationV2)","description":"Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.","operationId":"saveRelationV2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelation"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelation"}}}}}},"delete":{"tags":["entity-relation-controller"],"summary":"Delete Relation (deleteRelationV2)","description":"Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.","operationId":"deleteRelationV2","parameters":[{"name":"fromId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"fromType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"relationType","in":"query","description":"A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.","required":true,"schema":{"type":"string"}},{"name":"relationTypeGroup","in":"query","description":"A string value representing relation type group. For example, 'COMMON'","required":false,"schema":{"type":"string"}},{"name":"toId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"toType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelation"}}}}}}},"/api/user":{"post":{"tags":["user-controller"],"summary":"Save Or update User (saveUser)","description":"Create or update the User. When creating user, platform generates User Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created User Id will be present in the response. Specify existing User Id to update the device. Referencing non-existing User Id will cause 'Not Found' error.\n\nDevice email is unique for entire platform setup.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new User entity.\n\nAvailable for users with 'SYS_ADMIN', 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveUser","parameters":[{"name":"sendActivationMail","in":"query","description":"Send activation email (or use activation link)","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}}}},"/api/user/{userId}/userCredentialsEnabled":{"post":{"tags":["user-controller"],"summary":"Enable/Disable User credentials (setUserCredentialsEnabled)","description":"Enables or Disables user credentials. Useful when you would like to block user account without deleting it. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setUserCredentialsEnabled","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"userCredentialsEnabled","in":"query","description":"Enable (\"true\") or disable (\"false\") the credentials.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/sendActivationMail":{"post":{"tags":["user-controller"],"summary":"Send or re-send the activation email","description":"Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"sendActivationEmail","parameters":[{"name":"email","in":"query","description":"Email of the user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/mobile/session":{"get":{"tags":["user-controller"],"operationId":"getMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileSessionInfo"}}}}}},"post":{"tags":["user-controller"],"operationId":"saveMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileSessionInfo"}}},"required":true},"responses":{"200":{"description":"OK"}}},"delete":{"tags":["user-controller"],"operationId":"removeMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/trendz/settings":{"get":{"tags":["trendz-controller"],"summary":"Get Trendz Settings (getTrendzSettings)","description":"Retrieves Trendz settings for this tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getTrendzSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendzSettings"}}}}}},"post":{"tags":["trendz-controller"],"summary":"Save Trendz settings (saveTrendzSettings)","description":"Saves Trendz settings for this tenant.\n\n\nHere is an example of the Trendz settings:\n```json\n{\n  \"enabled\": true,\n  \"baseUrl\": \"https://some.domain.com:18888/also_necessary_prefix\"\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveTrendzSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendzSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendzSettings"}}}}}}},"/api/tenant":{"post":{"tags":["tenant-controller"],"summary":"Create Or update Tenant (saveTenant)","description":"Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveTenant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}}}}},"/api/tenantProfile":{"post":{"tags":["tenant-profile-controller"],"summary":"Create Or update Tenant Profile (saveTenantProfile)","description":"Create or update the Tenant Profile. When creating tenant profile, platform generates Tenant Profile Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Tenant Profile Id will be present in the response. Specify existing Tenant Profile Id id to update the Tenant Profile. Referencing non-existing Tenant Profile Id will cause 'Not Found' error. \n\nUpdate of the tenant profile configuration will cause immediate recalculation of API limits for all affected Tenants. \n\nThe **'profileData'** object is the part of Tenant Profile that defines API limits and Rate limits. \n\nYou have an ability to define maximum number of devices ('maxDevice'), assets ('maxAssets') and other entities. You may also define maximum number of messages to be processed per month ('maxTransportMessages', 'maxREExecutions', etc). The '*RateLimit' defines the rate limits using simple syntax. For example, '1000:1,20000:60' means up to 1000 events per second but no more than 20000 event per minute. Let's review the example of tenant profile data below: \n\n```json\n{\n  \"name\": \"Your name\",\n  \"description\": \"Your description\",\n  \"isolatedTbRuleEngine\": false,\n  \"profileData\": {\n    \"configuration\": {\n      \"type\": \"DEFAULT\",\n      \"maxDevices\": 0,\n      \"maxAssets\": 0,\n      \"maxCustomers\": 0,\n      \"maxUsers\": 0,\n      \"maxDashboards\": 0,\n      \"maxRuleChains\": 0,\n      \"maxResourcesInBytes\": 0,\n      \"maxOtaPackagesInBytes\": 0,\n      \"maxResourceSize\": 0,\n      \"transportTenantMsgRateLimit\": \"1000:1,20000:60\",\n      \"transportTenantTelemetryMsgRateLimit\": \"1000:1,20000:60\",\n      \"transportTenantTelemetryDataPointsRateLimit\": \"1000:1,20000:60\",\n      \"transportDeviceMsgRateLimit\": \"20:1,600:60\",\n      \"transportDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n      \"transportDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n      \"transportGatewayMsgRateLimit\": \"20:1,600:60\",\n      \"transportGatewayTelemetryMsgRateLimit\": \"20:1,600:60\",\n      \"transportGatewayTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n      \"transportGatewayDeviceMsgRateLimit\": \"20:1,600:60\",\n      \"transportGatewayDeviceTelemetryMsgRateLimit\": \"20:1,600:60\",\n      \"transportGatewayDeviceTelemetryDataPointsRateLimit\": \"20:1,600:60\",\n      \"maxTransportMessages\": 10000000,\n      \"maxTransportDataPoints\": 10000000,\n      \"maxREExecutions\": 4000000,\n      \"maxJSExecutions\": 5000000,\n      \"maxDPStorageDays\": 0,\n      \"maxRuleNodeExecutionsPerMessage\": 50,\n      \"maxDebugModeDurationMinutes\": 15,\n      \"maxEmails\": 0,\n      \"maxSms\": 0,\n      \"maxCreatedAlarms\": 1000,\n      \"defaultStorageTtlDays\": 0,\n      \"alarmsTtlDays\": 0,\n      \"rpcTtlDays\": 0,\n      \"queueStatsTtlDays\": 0,\n      \"ruleEngineExceptionsTtlDays\": 0,\n      \"warnThreshold\": 0,\n      \"maxCalculatedFieldsPerEntity\": 5,\n      \"maxArgumentsPerCF\": 10,\n      \"minAllowedScheduledUpdateIntervalInSecForCF\": 10,\n      \"maxRelationLevelPerCfArgument\": 2,\n      \"maxRelatedEntitiesToReturnPerCfArgument\": 100,\n      \"maxDataPointsPerRollingArg\": 1000,\n      \"maxStateSizeInKBytes\": 32,\n      \"maxSingleValueArgumentSizeInKBytes\": 2,      \"minAllowedDeduplicationIntervalInSecForCF\": 10,      \"minAllowedAggregationIntervalInSecForCF\": 60,      \"intermediateAggregationIntervalInSecForCF\": 300,      \"cfReevaluationCheckInterval\": 60,      \"alarmsReevaluationInterval\": 60    }\n  },\n  \"default\": false\n}\n```Remove 'id', from the request body example (below) to create new Tenant Profile entity.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveTenantProfile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantProfile"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantProfile"}}}}}}},"/api/tenantProfile/{tenantProfileId}/default":{"post":{"tags":["tenant-profile-controller"],"summary":"Make tenant profile default (setDefaultTenantProfile)","description":"Makes specified tenant profile to be default. Referencing non-existing tenant profile Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"setDefaultTenantProfile","parameters":[{"name":"tenantProfileId","in":"path","description":"A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantProfile"}}}}}}},"/api/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.\n\nAvailable 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/tenant/dashboard/home/info":{"get":{"tags":["dashboard-controller"],"summary":"Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo)","description":"Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the corresponding tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantHomeDashboardInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeDashboardInfo"}}}}}},"post":{"tags":["dashboard-controller"],"summary":"Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo)","description":"Update the home dashboard assignment for the current tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setTenantHomeDashboardInfo","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeDashboardInfo"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/signup/acceptPrivacyPolicy":{"post":{"tags":["sign-up-controller"],"operationId":"acceptPrivacyPolicy","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/ruleChains/import":{"post":{"tags":["rule-chain-controller"],"summary":"Import Rule Chains","description":"Imports all tenant rule chains as one JSON.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"importRuleChains","parameters":[{"name":"overwrite","in":"query","description":"Enables overwrite for existing rule chains with the same name.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChainData"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RuleChainImportResult"}}}}}}}},"/api/ruleChain":{"post":{"tags":["rule-chain-controller"],"summary":"Create Or Update Rule Chain (saveRuleChain)","description":"Create or update the Rule Chain. When creating Rule Chain, platform generates Rule Chain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Rule Chain Id will be present in the response. Specify existing Rule Chain id to update the rule chain. Referencing non-existing rule chain Id will cause 'Not Found' error.\n\nThe rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.Remove 'id', 'tenantId' from the request body example (below) to create new Rule Chain entity.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveRuleChain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/ruleChain/{ruleChainId}/root":{"post":{"tags":["rule-chain-controller"],"summary":"Set Root Rule Chain (setRootRuleChain)","description":"Makes the rule chain to be root rule chain. Updates previous root rule chain as well. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setRootRuleChain","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/ruleChain/{ruleChainId}/edgeTemplateRoot":{"post":{"tags":["rule-chain-controller"],"summary":"Set Edge Template Root Rule Chain (setEdgeTemplateRootRuleChain)","description":"Makes the rule chain to be root rule chain for any new edge that will be created. Does not update root rule chain for already created edges. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setEdgeTemplateRootRuleChain","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/ruleChain/{ruleChainId}/autoAssignToEdge":{"post":{"tags":["rule-chain-controller"],"summary":"Set Auto Assign To Edge Rule Chain (setAutoAssignToEdgeRuleChain)","description":"Makes the rule chain to be automatically assigned for any new edge that will be created. Does not assign this rule chain for already created edges. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setAutoAssignToEdgeRuleChain","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}},"delete":{"tags":["rule-chain-controller"],"summary":"Unset Auto Assign To Edge Rule Chain (unsetAutoAssignToEdgeRuleChain)","description":"Removes the rule chain from the list of rule chains that are going to be automatically assigned for any new edge that will be created. Does not unassign this rule chain for already assigned edges. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unsetAutoAssignToEdgeRuleChain","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/ruleChain/testScript":{"post":{"tags":["rule-chain-controller"],"summary":"Test Script function","description":"Execute the Script function and return the result. The format of request: \n\n```json\n{\n  \"script\": \"Your Function as String\",\n  \"scriptType\": \"One of: update, generate, filter, switch, json, string\",\n  \"argNames\": [\"msg\", \"metadata\", \"type\"],\n  \"msg\": \"{\\\"temperature\\\": 42}\", \n  \"metadata\": {\n    \"deviceName\": \"Device A\",\n    \"deviceType\": \"Thermometer\"\n  },\n  \"msgType\": \"POST_TELEMETRY_REQUEST\"\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"testScript","parameters":[{"name":"scriptLang","in":"query","description":"Script language: JS or TBEL","required":false,"schema":{"type":"string","enum":["JS","TBEL"]}}],"requestBody":{"description":"Test JS request. See API call description above.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/ruleChain/metadata":{"post":{"tags":["rule-chain-controller"],"summary":"Update Rule Chain Metadata","description":"Updates the rule chain metadata. The metadata object contains information about the rule nodes and their connections.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveRuleChainMetaData","parameters":[{"name":"updateRelated","in":"query","description":"Update related rule nodes.","required":false,"schema":{"type":"boolean","default":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChainMetaData"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChainMetaData"}}}}}}},"/api/ruleChain/device/default":{"post":{"tags":["rule-chain-controller"],"summary":"Create Default Rule Chain","description":"Create rule chain from template, based on the specified name in the request. Creates the rule chain based on the template that is used to create root rule chain. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveRuleChain_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultRuleChainCreateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/rule-engine/{entityType}/{entityId}":{"post":{"tags":["rule-engine-controller"],"summary":"Push entity message to the rule engine (handleRuleEngineRequest)","description":"Creates the Message with type 'REST_API_REQUEST' and payload taken from the request body. Uses specified Entity Id as the Rule Engine message originator. This method allows you to extend the regular platform API with the power of Rule Engine. You may use default and custom rule nodes to handle the message. The generated message contains two important metadata fields:\n\n * **'serviceId'** to identify the platform server that received the request;\n * **'requestUUID'** to identify the request and route possible response from the Rule Engine;\n\nUse **'rest call reply'** rule node to push the reply from rule engine back as a REST API call response. The default timeout of the request processing is 10 seconds.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).","operationId":"handleRuleEngineRequest","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the message."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/rule-engine/{entityType}/{entityId}/{timeout}":{"post":{"tags":["rule-engine-controller"],"summary":"Push entity message with timeout to the rule engine (handleRuleEngineRequest)","description":"Creates the Message with type 'REST_API_REQUEST' and payload taken from the request body. Uses specified Entity Id as the Rule Engine message originator. This method allows you to extend the regular platform API with the power of Rule Engine. You may use default and custom rule nodes to handle the message. The generated message contains two important metadata fields:\n\n * **'serviceId'** to identify the platform server that received the request;\n * **'requestUUID'** to identify the request and route possible response from the Rule Engine;\n\nUse **'rest call reply'** rule node to push the reply from rule engine back as a REST API call response. The platform expects the timeout value in milliseconds.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).","operationId":"handleRuleEngineRequest_1","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"timeout","in":"path","description":"Timeout to process the request in milliseconds","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the message."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}":{"post":{"tags":["rule-engine-controller"],"summary":"Push entity message with timeout and specified queue to the rule engine (handleRuleEngineRequest)","description":"Creates the Message with type 'REST_API_REQUEST' and payload taken from the request body. Uses specified Entity Id as the Rule Engine message originator. This method allows you to extend the regular platform API with the power of Rule Engine. You may use default and custom rule nodes to handle the message. The generated message contains two important metadata fields:\n\n * **'serviceId'** to identify the platform server that received the request;\n * **'requestUUID'** to identify the request and route possible response from the Rule Engine;\n\nUse **'rest call reply'** rule node to push the reply from rule engine back as a REST API call response. If request sent for Device/Device Profile or Asset/Asset Profile entity, specified queue will be used instead of the queue selected in the device or asset profile. The platform expects the timeout value in milliseconds.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).","operationId":"handleRuleEngineRequest_2","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"queueName","in":"path","description":"Queue name to process the request in the rule engine","required":true,"schema":{"type":"string"}},{"name":"timeout","in":"path","description":"Timeout to process the request in milliseconds","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the message."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/rule-engine/":{"post":{"tags":["rule-engine-controller"],"summary":"Push user message to the rule engine (handleRuleEngineRequest)","description":"Creates the Message with type 'REST_API_REQUEST' and payload taken from the request body. Uses current User Id ( the one which credentials is used to perform the request) as the Rule Engine message originator. This method allows you to extend the regular platform API with the power of Rule Engine. You may use default and custom rule nodes to handle the message. The generated message contains two important metadata fields:\n\n * **'serviceId'** to identify the platform server that received the request;\n * **'requestUUID'** to identify the request and route possible response from the Rule Engine;\n\nUse **'rest call reply'** rule node to push the reply from rule engine back as a REST API call response. The default timeout of the request processing is 10 seconds.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).","operationId":"handleRuleEngineRequest_3","requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the message."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/rpc/twoway/{deviceId}":{"post":{"tags":["rpc-v-2-controller"],"summary":"Send two-way RPC request","description":"Sends the two-way remote-procedure call (RPC) request to device. Sends the one-way remote-procedure call (RPC) request to device. The RPC call is A JSON that contains the method name ('method'), parameters ('params') and multiple optional fields. See example below. We will review the properties of the RPC call one-by-one below. \n\n```json\n{\n  \"method\": \"setGpio\",\n  \"params\": {\n    \"pin\": 7,\n    \"value\": 1\n  },\n  \"persistent\": false,\n  \"timeout\": 5000\n}\n```\n\n### Server-side RPC structure\n\nThe body of server-side RPC request consists of multiple fields:\n\n* **method** - mandatory, name of the method to distinct the RPC calls.\n  For example, \"getCurrentTime\" or \"getWeatherForecast\". The value of the parameter is a string.\n* **params** - mandatory, parameters used for processing of the request. The value is a JSON. Leave empty JSON \"{}\" if no parameters needed.\n* **timeout** - optional, value of the processing timeout in milliseconds. The default value is 10000 (10 seconds). The minimum value is 5000 (5 seconds).\n* **expirationTime** - optional, value of the epoch time (in milliseconds, UTC timezone). Overrides **timeout** if present.\n* **persistent** - optional, indicates persistent RPC. The default value is \"false\".\n* **retries** - optional, defines how many times persistent RPC will be re-sent in case of failures on the network and/or device side.\n* **additionalInfo** - optional, defines metadata for the persistent RPC that will be added to the persistent RPC events.\n\n### RPC Result\nIn case of persistent RPC, the result of this call is 'rpcId' UUID. In case of lightweight RPC, the result of this call is the response from device, or 504 Gateway Timeout if device is offline.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"handleTwoWayDeviceRPCRequest","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"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the RPC request."}}},"required":true},"responses":{"200":{"description":"Persistent RPC request was saved to the database or lightweight RPC response received.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to send the RPC request. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"413":{"description":"Request payload is too large","content":{"application/json":{"schema":{"type":"string"}}}},"504":{"description":"Timeout to process the RPC call. Most likely, device is offline.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/rpc/oneway/{deviceId}":{"post":{"tags":["rpc-v-2-controller"],"summary":"Send one-way RPC request","description":"Sends the one-way remote-procedure call (RPC) request to device. Sends the one-way remote-procedure call (RPC) request to device. The RPC call is A JSON that contains the method name ('method'), parameters ('params') and multiple optional fields. See example below. We will review the properties of the RPC call one-by-one below. \n\n```json\n{\n  \"method\": \"setGpio\",\n  \"params\": {\n    \"pin\": 7,\n    \"value\": 1\n  },\n  \"persistent\": false,\n  \"timeout\": 5000\n}\n```\n\n### Server-side RPC structure\n\nThe body of server-side RPC request consists of multiple fields:\n\n* **method** - mandatory, name of the method to distinct the RPC calls.\n  For example, \"getCurrentTime\" or \"getWeatherForecast\". The value of the parameter is a string.\n* **params** - mandatory, parameters used for processing of the request. The value is a JSON. Leave empty JSON \"{}\" if no parameters needed.\n* **timeout** - optional, value of the processing timeout in milliseconds. The default value is 10000 (10 seconds). The minimum value is 5000 (5 seconds).\n* **expirationTime** - optional, value of the epoch time (in milliseconds, UTC timezone). Overrides **timeout** if present.\n* **persistent** - optional, indicates persistent RPC. The default value is \"false\".\n* **retries** - optional, defines how many times persistent RPC will be re-sent in case of failures on the network and/or device side.\n* **additionalInfo** - optional, defines metadata for the persistent RPC that will be added to the persistent RPC events.\n\n### RPC Result\nIn case of persistent RPC, the result of this call is 'rpcId' UUID. In case of lightweight RPC, the result of this call is either 200 OK if the message was sent to device, or 504 Gateway Timeout if device is offline.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"handleOneWayDeviceRPCRequest","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"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the RPC request."}}},"required":true},"responses":{"200":{"description":"Persistent RPC request was saved to the database or lightweight RPC request was sent to the device.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to send the RPC request. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"413":{"description":"Request payload is too large","content":{"application/json":{"schema":{"type":"string"}}}},"504":{"description":"Timeout to process the RPC call. Most likely, device is offline.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/resource":{"get":{"tags":["tb-resource-controller"],"summary":"Get Resource Infos by ids (getSystemOrTenantResourcesByIds)","description":"Returns a page of Resource Info objects owned by tenant or sysadmin. 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. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getResources","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":"resourceType","in":"query","description":"A string value representing the resource type.","required":false,"schema":{"type":"string","enum":["LWM2M_MODEL","JKS","PKCS_12","JS_MODULE"]}},{"name":"resourceSubType","in":"query","description":"A string value representing the resource sub-type.","required":false,"schema":{"type":"string","enum":["EXTENSION","MODULE"]}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the resource title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","resourceType","tenantId"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"resourceIds","in":"query","description":"A list of resource 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/TbResourceInfo"}},{"$ref":"#/components/schemas/PageDataTbResourceInfo"}]}}}}}},"post":{"tags":["tb-resource-controller"],"summary":"Create Or Update Resource (saveResource)","description":"Create or update the Resource. When creating the Resource, platform generates Resource id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Resource id will be present in the response. Specify existing Resource id to update the Resource. Referencing non-existing Resource Id will cause 'Not Found' error. \n\nResource combination of the title with the key is unique in the scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Resource entity.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveResource","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResource"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}},"deprecated":true}},"/api/resource/upload":{"post":{"tags":["tb-resource-controller"],"summary":"Upload Resource via Multipart File (uploadResource)","description":"Create the Resource using multipart file upload. \n\nResource combination of the title with the key is unique in the scope of tenant. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"uploadResource","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Resource title."},"resourceType":{"type":"string","description":"Resource type."},"descriptor":{"type":"string","description":"Resource descriptor (JSON)."},"resourceSubType":{"type":"string","description":"Resource sub type."},"file":{"type":"string","format":"binary","description":"Resource file."}},"required":["file","resourceType"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/relations":{"get":{"tags":["entity-relation-controller"],"summary":"Get List of Relations (findByFrom)","description":"Returns list of relation objects for the specified entity by the 'from' direction and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.","operationId":"findByTo","parameters":[{"name":"toId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"toType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"relationTypeGroup","in":"query","description":"A string value representing relation type group. For example, 'COMMON'","required":false,"schema":{"type":"string"}},{"name":"relationType","in":"query","description":"A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.","required":true,"schema":{"type":"string"}},{"name":"fromId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"fromType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}}}}}},"post":{"tags":["entity-relation-controller"],"summary":"Find related entities (findByQuery)","description":"Returns all entities that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info.","operationId":"findByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelationsQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}}}}}},"delete":{"tags":["entity-relation-controller"],"summary":"Delete common relations (deleteCommonRelations)","description":"Deletes all the relations ('from' and 'to' direction) for the specified entity and relation type group: 'COMMON'. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer.","operationId":"deleteRelations","parameters":[{"name":"entityId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"entityType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/relations/info":{"get":{"tags":["entity-relation-controller"],"summary":"Get List of Relation Infos (findInfoByFrom)","description":"Returns list of relation info objects for the specified entity by the 'from' direction. \n\nIf the user has the authority of 'System Administrator', the server checks that the entity is owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ","operationId":"findInfoByTo","parameters":[{"name":"toId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"toType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"relationTypeGroup","in":"query","description":"A string value representing relation type group. For example, 'COMMON'","required":false,"schema":{"type":"string"}},{"name":"fromId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"fromType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationInfo"}}}}}}},"post":{"tags":["entity-relation-controller"],"summary":"Find related entity infos (findInfoByQuery)","description":"Returns all entity infos that are related to the specific entity. The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. See 'Model' tab of the Parameters for more info. Relation Info is an extension of the default Relation object that contains information about the 'from' and 'to' entity names. ","operationId":"findInfoByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelationsQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationInfo"}}}}}}}},"/api/relation":{"get":{"tags":["entity-relation-controller"],"summary":"Get Relation (getRelation)","description":"Returns relation object between two specified entities if present. Otherwise throws exception. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.","operationId":"getRelation","parameters":[{"name":"fromId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"fromType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"relationType","in":"query","description":"A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.","required":true,"schema":{"type":"string"}},{"name":"relationTypeGroup","in":"query","description":"A string value representing relation type group. For example, 'COMMON'","required":false,"schema":{"type":"string"}},{"name":"toId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"toType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelation"}}}}}},"post":{"tags":["entity-relation-controller"],"summary":"Create Relation (saveRelation)","description":"Creates or updates a relation between two entities in the platform. Relations unique key is a combination of from/to entity id and relation type group and relation type. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.","operationId":"saveRelation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelation"}}},"required":true},"responses":{"200":{"description":"OK"}}},"delete":{"tags":["entity-relation-controller"],"summary":"Delete Relation (deleteRelation)","description":"Deletes a relation between two entities in the platform. \n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer.","operationId":"deleteRelation","parameters":[{"name":"fromId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"fromType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"relationType","in":"query","description":"A string value representing relation type between entities. For example, 'Contains', 'Manages'. It can be any string value.","required":true,"schema":{"type":"string"}},{"name":"relationTypeGroup","in":"query","description":"A string value representing relation type group. For example, 'COMMON'","required":false,"schema":{"type":"string"}},{"name":"toId","in":"query","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"toType","in":"query","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/queues":{"get":{"tags":["queue-controller"],"summary":"Get Queues (getTenantQueuesByServiceType)","description":"Returns a page of queues registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getTenantQueuesByServiceType","parameters":[{"name":"serviceType","in":"query","description":"Service type (implemented only for the TB-RULE-ENGINE)","required":true,"schema":{"type":"string","enum":["TB-RULE-ENGINE","TB-CORE","TB-TRANSPORT","JS-EXECUTOR"]}},{"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 queue 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","topic"]}},{"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/PageDataQueue"}}}}}},"post":{"tags":["queue-controller"],"summary":"Create Or Update Queue (saveQueue)","description":"Create or update the Queue. When creating queue, platform generates Queue Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Specify existing Queue id to update the queue. Referencing non-existing Queue Id will cause 'Not Found' error.\n\nQueue name is unique in the scope of sysadmin. Remove 'id', 'tenantId' from the request body example (below) to create new Queue entity. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveQueue","parameters":[{"name":"serviceType","in":"query","description":"Service type (implemented only for the TB-RULE-ENGINE)","required":true,"schema":{"type":"string","enum":["TB-RULE-ENGINE","TB-CORE","TB-TRANSPORT","JS-EXECUTOR"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queue"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queue"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/{scope}":{"post":{"tags":["telemetry-controller"],"summary":"Save entity attributes (saveEntityAttributesV1)","description":"Creates or updates the entity attributes based on Entity Id and the specified attribute scope.  List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n    \"someNumber\": 42,\n    \"someArray\": [1,2,3],\n    \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveEntityAttributesV1","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE"]}}],"requestBody":{"description":"A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request or invalid attributes scope provided.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}},"delete":{"tags":["telemetry-controller"],"summary":"Delete entity attributes (deleteEntityAttributes)","description":"Delete entity attributes using provided Entity Id, scope and a list of keys. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteEntityAttributes","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE","CLIENT_SCOPE"]}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"Entity attributes was removed for the selected keys in the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Platform returns a bad request in case if keys or scope are not specified.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to delete entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}":{"post":{"tags":["telemetry-controller"],"summary":"Save or update time series data (saveEntityTelemetry)","description":"Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveEntityTelemetry","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility","required":true,"schema":{"type":"string","enum":["ANY"]}}],"requestBody":{"description":"A JSON with the telemetry values. See API call description for more details.","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl}":{"post":{"tags":["telemetry-controller"],"summary":"Save or update time series data with TTL (saveEntityTelemetryWithTTL)","description":"Creates or updates the entity time series data based on the Entity Id and request payload.The request payload is a JSON document with three possible formats:\n\nSimple format without timestamp. In such a case, current server time will be used: \n\n```json\n{\"temperature\": 26}\n```\n\n Single JSON object with timestamp: \n\n```json\n{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}\n```\n\n JSON array with timestamps: \n\n```json\n[{\"ts\":1634712287000,\"values\":{\"temperature\":26, \"humidity\":87}}, {\"ts\":1634712588000,\"values\":{\"temperature\":25, \"humidity\":88}}]\n```\n\n The scope parameter is not used in the API call implementation but should be specified whatever value because it is used as a path variable. \n\nThe ttl parameter takes affect only in case of Cassandra DB.Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveEntityTelemetryWithTTL","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"Value is deprecated, reserved for backward compatibility and not used in the API call implementation. Specify any scope for compatibility","required":true,"schema":{"type":"string","enum":["ANY"]}},{"name":"ttl","in":"path","description":"A long value representing TTL (Time to Live) parameter.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"A JSON with the telemetry values. See API call description for more details.","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Time series from the request was created or updated. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to save entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity time series updates with action type 'TIMESERIES_UPDATED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}":{"post":{"tags":["telemetry-controller"],"summary":"Save entity attributes (saveEntityAttributesV2)","description":"Creates or updates the entity attributes based on Entity Id and the specified attribute scope.  List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices.\n\nThe request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n    \"someNumber\": 42,\n    \"someArray\": [1,2,3],\n    \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveEntityAttributesV2","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE"]}}],"requestBody":{"description":"A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Attribute from the request was created or updated. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request or invalid attributes scope provided.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to save entity attributes for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{deviceId}/{scope}":{"post":{"tags":["telemetry-controller"],"summary":"Save device attributes (saveDeviceAttributes)","description":"Creates or updates the device attributes based on device id and specified attribute scope. The request payload is a JSON object with key-value format of attributes to create or update. For example:\n\n```json\n{\n \"stringKey\":\"value1\", \n \"booleanKey\":true, \n \"doubleKey\":42.0, \n \"longKey\":73, \n \"jsonKey\": {\n    \"someNumber\": 42,\n    \"someArray\": [1,2,3],\n    \"someNestedObject\": {\"key\": \"value\"}\n }\n}\n```\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveDeviceAttributes","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"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE"]}}],"requestBody":{"description":"A string value representing the json object. For example, '{\"key\":\"value\"}'. See API call description for more details.","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"Attribute from the request was created or updated. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED', and also sends event msg to the rule engine with msg type 'ATTRIBUTES_UPDATED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Invalid structure of the request or invalid attributes scope provided.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to save device attributes for selected device. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about device attributes updates with action type 'ATTRIBUTES_UPDATED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}},"delete":{"tags":["telemetry-controller"],"summary":"Delete device attributes (deleteDeviceAttributes)","description":"Delete device attributes using provided Device Id, scope and a list of keys. Referencing a non-existing Device Id will cause an error\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteDeviceAttributes","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"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE","CLIENT_SCOPE"]}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"Device attributes was removed for the selected keys in the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Platform returns a bad request in case if keys or scope are not specified.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to delete device attributes for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about device attributes removal with action type 'ATTRIBUTES_DELETED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/rpc/twoway/{deviceId}":{"post":{"tags":["rpc-v-1-controller"],"summary":"Send two-way RPC request (handleTwoWayDeviceRPCRequest)","description":"Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"handleTwoWayDeviceRPCRequest_1","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"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the RPC request."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/rpc/oneway/{deviceId}":{"post":{"tags":["rpc-v-1-controller"],"summary":"Send one-way RPC request (handleOneWayDeviceRPCRequest)","description":"Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"handleOneWayDeviceRPCRequest_1","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"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","description":"A JSON value representing the RPC request."}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/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\n\nAvailable 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.\n\nAvailable 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/oauth2/config/template":{"get":{"tags":["o-auth-2-config-template-controller"],"summary":"Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates)\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","description":"Client registration template is OAuth2 provider configuration template with default settings for registering new OAuth2 clients","operationId":"getClientRegistrationTemplates","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2ClientRegistrationTemplate"}}}}}}},"post":{"tags":["o-auth-2-config-template-controller"],"summary":"Create or update OAuth2 client registration template (saveClientRegistrationTemplate)\n\nAvailable for users with 'SYS_ADMIN' authority.","description":"Client registration template is OAuth2 provider configuration template with default settings for registering new OAuth2 clients","operationId":"saveClientRegistrationTemplate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuth2ClientRegistrationTemplate"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuth2ClientRegistrationTemplate"}}}}}}},"/api/oauth2/client":{"post":{"tags":["o-auth-2-controller"],"summary":"Save OAuth2 Client (saveOAuth2Client)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveOAuth2Client","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuth2Client"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuth2Client"}}}}}}},"/api/notification/template":{"post":{"tags":["notification-template-controller"],"summary":"Save notification template (saveNotificationTemplate)","description":"Creates or updates notification template.\n\nHere is an example of template to send notification via Web, SMS and Slack:\n```json\n{\n  \"name\": \"Greetings\",\n  \"notificationType\": \"GENERAL\",\n  \"configuration\": {\n    \"deliveryMethodsTemplates\": {\n      \"WEB\": {\n        \"enabled\": true,\n        \"subject\": \"Greetings\",\n        \"body\": \"Hi there, ${recipientTitle}\",\n        \"additionalConfig\": {\n          \"icon\": {\n            \"enabled\": true,\n            \"icon\": \"back_hand\",\n            \"color\": \"#757575\"\n          },\n          \"actionButtonConfig\": {\n            \"enabled\": false\n          }\n        },\n        \"method\": \"WEB\"\n      },\n      \"SMS\": {\n        \"enabled\": true,\n        \"body\": \"Hi there, ${recipientTitle}\",\n        \"method\": \"SMS\"\n      },\n      \"SLACK\": {\n        \"enabled\": true,\n        \"body\": \"Hi there, @${recipientTitle}\",\n        \"method\": \"SLACK\"\n      }\n    }\n  }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveNotificationTemplate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTemplate"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTemplate"}}}}}}},"/api/notification/target":{"post":{"tags":["notification-target-controller"],"summary":"Save notification target (saveNotificationTarget)","description":"Creates or updates notification target.\n\nAvailable `configuration` types are `PLATFORM_USERS` and `SLACK`.\nFor `PLATFORM_USERS` the `usersFilter` must be specified. For tenant, there are following users filter types available: `USER_LIST`, `CUSTOMER_USERS`, `TENANT_ADMINISTRATORS`, `ALL_USERS`, `ORIGINATOR_ENTITY_OWNER_USERS`, `AFFECTED_USER`.\nFor sysadmin: `TENANT_ADMINISTRATORS`, `AFFECTED_TENANT_ADMINISTRATORS`, `SYSTEM_ADMINISTRATORS`, `ALL_USERS`.\n\nHere is an example of tenant-level notification target to send notification to customer's users:\n```json\n{\n  \"name\": \"Users of Customer A\",\n  \"configuration\": {\n    \"type\": \"PLATFORM_USERS\",\n    \"usersFilter\": {\n      \"type\": \"CUSTOMER_USERS\",\n      \"customerId\": \"32499a20-d785-11ed-a06c-21dd57dd88ca\"\n    },\n    \"description\": \"Users of Customer A\"\n  }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveNotificationTarget","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTarget"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTarget"}}}}}}},"/api/notification/target/recipients":{"post":{"tags":["notification-target-controller"],"summary":"Get recipients for notification target config (getRecipientsForNotificationTargetConfig)","description":"Returns the page of recipients for such notification target configuration.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getRecipientsForNotificationTargetConfig","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"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTarget"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataUser"}}}}}}},"/api/notification/settings":{"get":{"tags":["notification-controller"],"summary":"Get notification settings (getNotificationSettings)","description":"Retrieves notification settings for this tenant or sysadmin.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}}}},"post":{"tags":["notification-controller"],"summary":"Save notification settings (saveNotificationSettings)","description":"Saves notification settings for this tenant or sysadmin.\n`deliveryMethodsConfigs` of the settings must be specified.\n\nHere is an example of the notification settings with Slack configuration:\n```json\n{\n  \"deliveryMethodsConfigs\": {\n    \"SLACK\": {\n      \"method\": \"SLACK\",\n      \"botToken\": \"xoxb-....\"\n    }\n  }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveNotificationSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}}}}},"/api/notification/settings/user":{"get":{"tags":["notification-controller"],"operationId":"getUserNotificationSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotificationSettings"}}}}}},"post":{"tags":["notification-controller"],"operationId":"saveUserNotificationSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotificationSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotificationSettings"}}}}}}},"/api/notification/rule":{"post":{"tags":["notification-rule-controller"],"summary":"Save notification rule (saveNotificationRule)","description":"Creates or updates notification rule. \n\nMandatory properties are `name`, `templateId` (of a template with `notificationType` matching to rule's `triggerType`), `triggerType`, `triggerConfig` and `recipientConfig`. Additionally, you may specify rule `description` inside of `additionalConfig`.\n\nTrigger type of the rule cannot be changed. Available trigger types for tenant: `ENTITY_ACTION`, `ALARM`, `ALARM_COMMENT`, `ALARM_ASSIGNMENT`, `DEVICE_ACTIVITY`, `RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT`.\nFor sysadmin, there are following trigger types available: `ENTITIES_LIMIT`, `API_USAGE_LIMIT`, `NEW_PLATFORM_VERSION`.\n\nHere is an example of notification rule to send notification when a device, asset or customer is created or deleted:\n```json\n{\n  \"name\": \"Entity action\",\n  \"templateId\": {\n    \"entityType\": \"NOTIFICATION_TEMPLATE\",\n    \"id\": \"32117320-d785-11ed-a06c-21dd57dd88ca\"\n  },\n  \"triggerType\": \"ENTITY_ACTION\",\n  \"triggerConfig\": {\n    \"entityTypes\": [\n      \"CUSTOMER\",\n      \"DEVICE\",\n      \"ASSET\"\n    ],\n    \"created\": true,\n    \"updated\": false,\n    \"deleted\": true,\n    \"triggerType\": \"ENTITY_ACTION\"\n  },\n  \"recipientsConfig\": {\n    \"targets\": [\n      \"320f2930-d785-11ed-a06c-21dd57dd88ca\"\n    ],\n    \"triggerType\": \"ENTITY_ACTION\"\n  },\n  \"additionalConfig\": {\n    \"description\": \"Send notification to tenant admins or customer users when a device, asset or customer is created\"\n  },\n  \"templateName\": \"Entity action notification\",\n  \"deliveryMethods\": [\n    \"WEB\"\n  ]\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveNotificationRule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRule"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRule"}}}}}}},"/api/notification/request":{"post":{"tags":["notification-controller"],"summary":"Create notification request (createNotificationRequest)","description":"Processes notification request.\nMandatory request properties are `targets` (list of targets ids to send notification to), and either `templateId` (existing notification template id) or `template` (to send notification without saving the template).\nOptionally, you can set `sendingDelayInSec` inside the `additionalConfig` field to schedule the notification.\n\nFor each enabled delivery method in the notification template, there must be a target in the `targets` list that supports this delivery method: if you chose `WEB`, `EMAIL` or `SMS` - there must be at least one target in `targets` of `PLATFORM_USERS` type.\nFor `SLACK` delivery method - you need to chose at least one `SLACK` notification target.\n\nNotification request object with `PROCESSING` status will be returned immediately, and the notification sending itself is done asynchronously. After all notifications are sent, the `status` of the request becomes `SENT`. Use `getNotificationRequestById` to see the notification request processing status and some sending stats. \n\nHere is an example of notification request to one target using saved template:\n```json\n{\n  \"templateId\": {\n    \"entityType\": \"NOTIFICATION_TEMPLATE\",\n    \"id\": \"6dbc3670-e4dd-11ed-9401-dbcc5dff78be\"\n  },\n  \"targets\": [\n    \"320e3ed0-d785-11ed-a06c-21dd57dd88ca\"\n  ],\n  \"additionalConfig\": {\n    \"sendingDelayInSec\": 0\n  }\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"createNotificationRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequest"}}}}}}},"/api/notification/request/preview":{"post":{"tags":["notification-controller"],"summary":"Get notification request preview (getNotificationRequestPreview)","description":"Returns preview for notification request.\n\n`processedTemplates` shows how the notifications for each delivery method will look like for the first recipient of the corresponding notification target.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationRequestPreview","parameters":[{"name":"recipientsPreviewSize","in":"query","description":"Amount of the recipients to show in preview","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequestPreview"}}}}}}},"/api/notification/entitiesLimitIncreaseRequest/{entityType}":{"post":{"tags":["notification-controller"],"summary":"Send entity limit increase request notification to System administrators (sendEntitiesLimitIncreaseRequest)","description":"Send entity limit increase request notification by Tenant Administrator to System administrators.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"sendEntitiesLimitIncreaseRequest","parameters":[{"name":"entityType","in":"path","description":"Entity type","required":true,"schema":{"type":"string","enum":["DEVICE","ASSET","CUSTOMER","USER","DASHBOARD","RULE_CHAIN","EDGE"]}}],"responses":{"200":{"description":"OK"}}}},"/api/noauth/signup":{"post":{"tags":["sign-up-controller"],"operationId":"signUp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignUpRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","enum":["SUCCESS","INACTIVE_USER_EXISTS"]}}}}}}},"/api/noauth/resetPassword":{"get":{"tags":["auth-controller"],"summary":"Check password reset token (checkResetToken)","description":"Checks the password reset token and forwards user to 'Reset Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Reset Password' page and same 'resetToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.","operationId":"checkResetToken","parameters":[{"name":"resetToken","in":"query","description":"The reset token string.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["auth-controller"],"summary":"Reset password (resetPassword)","description":"Checks the password reset token and updates the password. If token is not valid, returns '400 Bad Request'.","operationId":"resetPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/noauth/resetPasswordByEmail":{"post":{"tags":["auth-controller"],"summary":"Request reset password email (requestResetPasswordByEmail)","description":"Request to send the reset password email if the user with specified email address is present in the database. Always return '200 OK' status for security purposes.","operationId":"requestResetPasswordByEmail","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordEmailRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/noauth/resendEmailActivation":{"post":{"tags":["sign-up-controller"],"operationId":"resendEmailActivation","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string"}},{"name":"pkgName","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/noauth/oauth2Clients":{"post":{"tags":["o-auth-2-controller"],"summary":"Get OAuth2 clients (getOAuth2Clients)","description":"Get the list of OAuth2 clients to log in with, available for such domain scheme (HTTP or HTTPS) (if x-forwarded-proto request header is present - the scheme is known from it) and domain name and port (port may be known from x-forwarded-port header)","operationId":"getOAuth2Clients","parameters":[{"name":"pkgName","in":"query","description":"Mobile application package name, to find OAuth2 clients where there is configured mobile application with such package name","required":false,"schema":{"type":"string"}},{"name":"platform","in":"query","description":"Platform type to search OAuth2 clients for which the usage with this platform type is allowed in the settings. If platform type is not one of allowable values - it will just be ignored","required":false,"schema":{"type":"string","enum":["WEB","ANDROID","IOS"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2ClientLoginInfo"}}}}}}}},"/api/noauth/activate":{"get":{"tags":["auth-controller"],"summary":"Check Activate User Token (checkActivateToken)","description":"Checks the activation token and forwards user to 'Create Password' page. If token is valid, returns '303 See Other' (redirect) response code with the correct address of 'Create Password' page and same 'activateToken' specified in the URL parameters. If token is not valid, returns '409 Conflict'. If token is expired, redirects to error page.","operationId":"checkActivateToken","parameters":[{"name":"activateToken","in":"query","description":"The activate token string.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["auth-controller"],"summary":"Activate User","description":"Checks the activation token and updates corresponding user password in the database. Now the user may start using his password to login. The response already contains the [JWT](https://jwt.io) activation and refresh tokens, to simplify the user activation flow and avoid asking user to input password again after activation. If token is valid, returns the object that contains [JWT](https://jwt.io/) access and refresh tokens. If token is not valid, returns '400 Bad Request'.","operationId":"activateUser","parameters":[{"name":"sendActivationMail","in":"query","required":false,"schema":{"type":"boolean","default":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateUserRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/noauth/activateByEmailCode":{"post":{"tags":["sign-up-controller"],"operationId":"activateUserByEmailCode","parameters":[{"name":"emailCode","in":"query","required":true,"schema":{"type":"string"}},{"name":"pkgName","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/mobile/qr/settings":{"get":{"tags":["qr-code-settings-controller"],"summary":"Get Mobile application settings (getMobileAppSettings)","description":"The response payload contains configuration for android/iOS applications and platform qr code widget settings.\n\nAvailable for any authorized user. ","operationId":"getQrCodeSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCodeSettings"}}}}}},"post":{"tags":["qr-code-settings-controller"],"summary":"Create Or Update the Mobile application settings (saveMobileAppSettings)","description":"The request payload contains configuration for android/iOS applications and platform qr code widget settings.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveQrCodeSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCodeSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCodeSettings"}}}}}}},"/api/mobile/bundle":{"post":{"tags":["mobile-app-bundle-controller"],"summary":"Save Or update Mobile app bundle (saveMobileAppBundle)","description":"Create or update the Mobile app bundle that represents tha pair of ANDROID and IOS app and mobile settings like oauth2 clients, self-registration and layout configuration.When creating mobile app bundle, platform generates Mobile App Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Mobile App Bundle Id will be present in the response. Referencing non-existing Mobile App Bundle Id will cause 'Not Found' error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveMobileAppBundle","parameters":[{"name":"oauth2ClientIds","in":"query","description":"A list of oauth2 client ids, separated by comma ','","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileAppBundle"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileAppBundle"}}}}}}},"/api/mobile/app":{"get":{"tags":["mobile-app-controller"],"summary":"Get mobile app infos (getTenantMobileAppInfos)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getTenantMobileApps","parameters":[{"name":"platformType","in":"query","description":"Platform type: ANDROID or IOS","required":false,"schema":{"type":"string","enum":["WEB","ANDROID","IOS"]}},{"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":"Case-insensitive 'substring' filter based on app's name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataMobileApp"}}}}}},"post":{"tags":["mobile-app-controller"],"summary":"Save Or update Mobile app (saveMobileApp)","description":"Create or update the Mobile app. When creating mobile app, platform generates Mobile App Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Mobile App Id will be present in the response. Specify existing Mobile App Id to update the mobile app. Referencing non-existing Mobile App Id will cause 'Not Found' error.\n\nThe pair of mobile app package name and platform type is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"saveMobileApp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileApp"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileApp"}}}}}}},"/api/lwm2m/device-credentials":{"post":{"tags":["lwm-2m-controller"],"summary":"Save device with credentials (Deprecated)","operationId":"saveDeviceWithCredentials","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}}}}}}},"/api/job/{id}/reprocess":{"post":{"tags":["job-controller"],"operationId":"reprocessJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/job/{id}/cancel":{"post":{"tags":["job-controller"],"operationId":"cancelJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/image":{"post":{"tags":["image-controller"],"operationId":"uploadImage","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"title":{"type":"string"},"imageSubType":{"type":"string"}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/events/{entityType}/{entityId}":{"get":{"tags":["event-controller"],"summary":"Get Events (Deprecated)","description":"Returns a page of events for specified entity. Deprecated and will be removed in next minor release. The call was deprecated to improve the performance of the system. Current implementation will return 'Lifecycle' events only. Use 'Get events by type' or 'Get events by filter' instead. 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. ","operationId":"getEvents","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"query","description":"A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The value is not used in searching.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["ts","id"]}},{"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. Events with creation time before it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Events 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/PageDataEventInfo"}}}}}},"post":{"tags":["event-controller"],"summary":"Get Events by event filter (getEvents)","description":"Returns a page of events for the chosen entity by specifying the event filter. 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\n# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identifier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n   \"eventType\":\"ERROR\",\n   \"server\":\"ip-172-31-24-152\",\n   \"method\":\"onClusterEventMsg\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n   \"eventType\":\"LC_EVENT\",\n   \"server\":\"ip-172-31-24-152\",\n   \"event\":\"STARTED\",\n   \"status\":\"Success\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n   \"eventType\":\"STATS\",\n   \"server\":\"ip-172-31-24-152\",\n   \"messagesProcessed\":10,\n   \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_RULE_NODE\",\n   \"msgDirectionType\":\"IN\",\n   \"server\":\"ip-172-31-24-152\",\n   \"dataSearch\":\"humidity\",\n   \"metadataSearch\":\"deviceName\",\n   \"entityName\":\"DEVICE\",\n   \"relationType\":\"Success\",\n   \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_RULE_CHAIN\",\n   \"msgDirectionType\":\"IN\",\n   \"server\":\"ip-172-31-24-152\",\n   \"dataSearch\":\"humidity\",\n   \"metadataSearch\":\"deviceName\",\n   \"entityName\":\"DEVICE\",\n   \"relationType\":\"Success\",\n   \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n   \"server\":\"ip-172-31-24-152\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n   \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n   \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"arguments\":\"{\n    \"x\": {\n      \"ts\": 1739432016629,\n      \"value\": 20\n    },\n    \"y\": {\n      \"ts\": 1739429717656,\n      \"value\": 12\n    }\n  }\",\n   \"result\":\"{\n    \"x + y\": 32\n  }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n","operationId":"getEvents_1","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"query","description":"A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The value is not used in searching.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["ts","id"]}},{"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. Events with creation time before it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Events with creation time after it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"A JSON value representing the event filter.","oneOf":[{"$ref":"#/components/schemas/CalculatedFieldDebugEventFilter"},{"$ref":"#/components/schemas/ErrorEventFilter"},{"$ref":"#/components/schemas/LifeCycleEventFilter"},{"$ref":"#/components/schemas/RuleChainDebugEventFilter"},{"$ref":"#/components/schemas/RuleNodeDebugEventFilter"},{"$ref":"#/components/schemas/StatisticsEventFilter"}]}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEventInfo"}}}}}}},"/api/events/{entityType}/{entityId}/clear":{"post":{"tags":["event-controller"],"summary":"Clear Events (clearEvents)","description":"Clears events by filter for specified entity.","operationId":"clearEvents","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"startTime","in":"query","description":"Timestamp. Events with creation time before it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Events with creation time after it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"# Event Filter Definition\n\n6 different eventFilter objects could be set for different event types. The eventType field is required. Others are optional. If some of them are set, the filtering will be applied according to them. See the examples below for all the fields used for each event type filtering. \n\nNote,\n\n * 'server' - string value representing the server name, identifier or ip address where the platform is running;\n * 'errorStr' - the case insensitive 'contains' filter based on error message.\n\n## Error Event Filter\n\n```json\n{\n   \"eventType\":\"ERROR\",\n   \"server\":\"ip-172-31-24-152\",\n   \"method\":\"onClusterEventMsg\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'method' - string value representing the method name when the error happened.\n\n## Lifecycle Event Filter\n\n```json\n{\n   \"eventType\":\"LC_EVENT\",\n   \"server\":\"ip-172-31-24-152\",\n   \"event\":\"STARTED\",\n   \"status\":\"Success\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'event' - string value representing the lifecycle event type;\n * 'status' - string value representing status of the lifecycle event.\n\n## Statistics Event Filter\n\n```json\n{\n   \"eventType\":\"STATS\",\n   \"server\":\"ip-172-31-24-152\",\n   \"messagesProcessed\":10,\n   \"errorsOccurred\":5\n}\n```\n\n * 'messagesProcessed' - the minimum number of successfully processed messages;\n * 'errorsOccurred' - the minimum number of errors occurred during messages processing.\n\n## Debug Rule Node Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_RULE_NODE\",\n   \"msgDirectionType\":\"IN\",\n   \"server\":\"ip-172-31-24-152\",\n   \"dataSearch\":\"humidity\",\n   \"metadataSearch\":\"deviceName\",\n   \"entityName\":\"DEVICE\",\n   \"relationType\":\"Success\",\n   \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n## Debug Rule Chain Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_RULE_CHAIN\",\n   \"msgDirectionType\":\"IN\",\n   \"server\":\"ip-172-31-24-152\",\n   \"dataSearch\":\"humidity\",\n   \"metadataSearch\":\"deviceName\",\n   \"entityName\":\"DEVICE\",\n   \"relationType\":\"Success\",\n   \"entityId\":\"de9d54a0-2b7a-11ec-a3cc-23386423d98f\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n}\n```\n\n * 'msgDirectionType' - string value representing msg direction type (incoming to entity or outcoming from entity);\n * 'dataSearch' - the case insensitive 'contains' filter based on data (key and value) for the message;\n * 'metadataSearch' - the case insensitive 'contains' filter based on metadata (key and value) for the message;\n * 'entityName' - string value representing the entity type;\n * 'relationType' - string value representing the type of message routing;\n * 'entityId' - string value representing the entity id in the event body (originator of the message);\n * 'msgType' - string value representing the message type;\n * 'isError' - boolean value to filter the errors.\n\n## Debug Calculated Field Event Filter\n\n```json\n{\n   \"eventType\":\"DEBUG_CALCULATED_FIELD\",\n   \"server\":\"ip-172-31-24-152\",\n   \"isError\":\"false\",\n   \"errorStr\":\"Error Message\"\n   \"entityId\":\"cf4b8741-f618-471f-ae08-d881ca7f9fe9\",\n   \"msgId\":\"5cf7d3a0-aee7-40dd-a737-ade05528e7eb\",\n   \"msgType\":\"POST_TELEMETRY_REQUEST\",\n   \"arguments\":\"{\n    \"x\": {\n      \"ts\": 1739432016629,\n      \"value\": 20\n    },\n    \"y\": {\n      \"ts\": 1739429717656,\n      \"value\": 12\n    }\n  }\",\n   \"result\":\"{\n    \"x + y\": 32\n  }\",\n}\n```\n\n * 'entityId' - string value representing the entity id in the event body;\n * 'entityType' - string value representing the entity type;\n * 'msgId' - string value representing the message id in the rule engine;\n * 'msgType' - string value representing the message type;\n * 'arguments' - string value representing the arguments that were used in the calculation performed;\n * 'result' - string value representing the result of a calculation;\n * 'isError' - boolean value to filter the errors.\n\n","oneOf":[{"$ref":"#/components/schemas/CalculatedFieldDebugEventFilter"},{"$ref":"#/components/schemas/ErrorEventFilter"},{"$ref":"#/components/schemas/LifeCycleEventFilter"},{"$ref":"#/components/schemas/RuleChainDebugEventFilter"},{"$ref":"#/components/schemas/RuleNodeDebugEventFilter"},{"$ref":"#/components/schemas/StatisticsEventFilter"}]}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/entityViews":{"get":{"tags":["entity-view-controller"],"summary":"Get Entity Views By Ids (getEntityViewsByIds)","description":"Requested entity views must be owned by tenant or assigned to customer which user is performing the request. ","operationId":"getEntityViewsByIds","parameters":[{"name":"entityViewIds","in":"query","description":"A list of entity view 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/EntityView"}}}}}}},"post":{"tags":["entity-view-controller"],"summary":"Find related entity views (findByQuery)","description":"Returns all entity views that are related to the specific entity. The entity id, relation type, entity view types, depth of the search, and other query parameters defined using complex 'EntityViewSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"findByQuery_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityViewSearchQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityView"}}}}}}}},"/api/entityView":{"post":{"tags":["entity-view-controller"],"summary":"Save or update entity view (saveEntityView)","description":"Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Entity View entity.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveEntityView","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/EntityView"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}}},"/api/entitiesQuery/find":{"post":{"tags":["entity-query-controller"],"summary":"Find Entity Data by Query","description":"Allows to run complex queries over platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the paginated result of the query that contains requested entity fields and latest values of requested attributes and time series data.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the **entity filter** by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nThe **entity fields** and **latest values** contains list of entity fields and latest attribute/telemetry fields to fetch for each entity.\n\nThe **page link** contains information about the page to fetch and the sort ordering.\n\nLet's review the example:\n\n```json\n{\n  \"entityFilter\": {\n    \"type\": \"entityType\",\n    \"resolveMultiple\": true,\n    \"entityType\": \"DEVICE\"\n  },\n  \"keyFilters\": [\n    {\n      \"key\": {\n        \"type\": \"TIME_SERIES\",\n        \"key\": \"temperature\"\n      },\n      \"valueType\": \"NUMERIC\",\n      \"predicate\": {\n        \"operation\": \"GREATER\",\n        \"value\": {\n          \"defaultValue\": 0,\n          \"dynamicValue\": {\n            \"sourceType\": \"CURRENT_USER\",\n            \"sourceAttribute\": \"temperatureThreshold\",\n            \"inherit\": false\n          }\n        },\n        \"type\": \"NUMERIC\"\n      }\n    }\n  ],\n  \"entityFields\": [\n    {\n      \"type\": \"ENTITY_FIELD\",\n      \"key\": \"name\"\n    },\n    {\n      \"type\": \"ENTITY_FIELD\",\n      \"key\": \"label\"\n    },\n    {\n      \"type\": \"ENTITY_FIELD\",\n      \"key\": \"additionalInfo\"\n    }\n  ],\n  \"latestValues\": [\n    {\n      \"type\": \"ATTRIBUTE\",\n      \"key\": \"model\"\n    },\n    {\n      \"type\": \"TIME_SERIES\",\n      \"key\": \"temperature\"\n    }\n  ],\n  \"pageLink\": {\n    \"page\": 0,\n    \"pageSize\": 10,\n    \"sortOrder\": {\n      \"key\": {\n        \"key\": \"name\",\n        \"type\": \"ENTITY_FIELD\"\n      },\n      \"direction\": \"ASC\"\n    }\n  }\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n  \"type\": \"singleEntity\",\n  \"singleEntity\": {\n    \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n    \"entityType\": \"DEVICE\"\n  }\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n  \"type\": \"entityList\",\n  \"entityType\": \"DEVICE\",\n  \"entityList\": [\n    \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n    \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n  ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n  \"type\": \"entityName\",\n  \"entityType\": \"DEVICE\",\n  \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n  \"type\": \"entityType\",\n  \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n  \"type\": \"assetType\",\n  \"assetType\": \"charging station\",\n  \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n  \"type\": \"deviceType\",\n  \"deviceType\": \"Temperature Sensor\",\n  \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n  \"type\": \"edgeType\",\n  \"edgeType\": \"Factory\",\n  \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n  \"type\": \"apiUsageState\",\n  \"customerId\": {\n    \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n    \"entityType\": \"CUSTOMER\"\n  }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n  \"type\": \"relationsQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"filters\": [\n    {\n      \"relationType\": \"Contains\",\n      \"entityTypes\": [\n        \"DEVICE\",\n        \"ASSET\"\n      ]\n    }\n  ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"assetSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"relationType\": \"Contains\",\n  \"assetTypes\": [\n    \"charging station\"\n  ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"deviceSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 2,\n  \"fetchLastLevelOnly\": true,\n  \"relationType\": \"Contains\",\n  \"deviceTypes\": [\n    \"Air Quality Sensor\",\n    \"Charging port\"\n  ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"entityViewSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"relationType\": \"Contains\",\n  \"entityViewTypes\": [\n    \"Concrete mixer\"\n  ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"deviceSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 2,\n  \"fetchLastLevelOnly\": true,\n  \"relationType\": \"Contains\",\n  \"edgeTypes\": [\n    \"Factory\"\n  ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n  \"key\": {\n    \"type\": \"TIME_SERIES\",\n    \"key\": \"temperature\"\n  },\n  \"valueType\": \"NUMERIC\",\n  \"predicate\": {\n    \"operation\": \"GREATER\",\n    \"value\": {\n      \"defaultValue\": 20,\n      \"dynamicValue\": null\n    },\n    \"type\": \"NUMERIC\"\n  }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \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 * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let'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## 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    \"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        \"defaultValue\": 10,\n        \"dynamicValue\": null\n      },\n      \"type\": \"NUMERIC\"\n    },\n    {\n      \"operation\": \"GREATER\",\n      \"value\": {\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        \"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            \"defaultValue\": 50,\n            \"dynamicValue\": null\n          },\n          \"type\": \"NUMERIC\"\n        },\n        {\n          \"operation\": \"LESS\",\n          \"value\": {\n            \"defaultValue\": 60,\n            \"dynamicValue\": null\n          },\n          \"type\": \"NUMERIC\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n You 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 user that is performing the API call. See example below: \n\n```json\n{\n  \"operation\": \"GREATER\",\n  \"value\": {\n    \"defaultValue\": 0,\n    \"dynamicValue\": {\n      \"sourceType\": \"CURRENT_USER\",\n      \"sourceAttribute\": \"temperatureThreshold\"\n    }\n  },\n  \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', '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.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"findEntityDataByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDataQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEntityData"}}}}}}},"/api/entitiesQuery/find/keys":{"post":{"tags":["entity-query-controller"],"summary":"Find Available Entity Keys by Query","description":"Returns unique time series and/or attribute key names from entities matching the query.\n\nExecutes the Entity Data Query to find up to 100 entities, then fetches and aggregates all distinct key names.\n\nPrimarily used for UI features like autocomplete suggestions.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"findAvailableEntityKeysByQuery","parameters":[{"name":"timeseries","in":"query","description":"When true, includes unique time series key names in the response.\nWhen false, the 'timeseries' list will be empty.","required":true,"schema":{"type":"boolean"}},{"name":"attributes","in":"query","description":"When true, includes unique attribute key names in the response.\nWhen false, the 'attribute' list will be empty. Use 'scope' parameter to filter by attribute scope.","required":true,"schema":{"type":"boolean"}},{"name":"scope","in":"query","description":"Filters attribute keys by scope. Only applies when 'attributes' is true.\nIf not specified, returns attribute keys from all scopes.","required":false,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE","CLIENT_SCOPE"]}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDataQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableEntityKeys"}}}}}}},"/api/entitiesQuery/count":{"post":{"tags":["entity-query-controller"],"summary":"Count Entities by Query","description":"Allows to run complex queries to search the count of platform entities (devices, assets, customers, etc) based on the combination of main entity filter and multiple key filters. Returns the number of entities that match the query definition.\n\n# Query Definition\n\n\n\nMain **entity filter** is mandatory and defines generic search criteria. For example, \"find all devices with profile 'Moisture Sensor'\" or \"Find all devices related to asset 'Building A'\"\n\nOptional **key filters** allow to filter results of the entity filter by complex criteria against main entity fields (name, label, type, etc), attributes and telemetry. For example, \"temperature > 20 or temperature< 10\" or \"name starts with 'T', and attribute 'model' is 'T1000', and time series field 'batteryLevel' > 40\".\n\nLet's review the example:\n\n```json\n{\n  \"entityFilter\": {\n    \"type\": \"entityType\",\n    \"entityType\": \"DEVICE\"\n  },\n  \"keyFilters\": [\n    {\n      \"key\": {\n        \"type\": \"ATTRIBUTE\",\n        \"key\": \"active\"\n      },\n      \"valueType\": \"BOOLEAN\",\n      \"predicate\": {\n        \"operation\": \"EQUAL\",\n        \"value\": {\n          \"defaultValue\": true,\n          \"dynamicValue\": null\n        },\n        \"type\": \"BOOLEAN\"\n      }\n    }\n  ]\n}\n```\n\n Example mentioned above search all devices which have attribute 'active' set to 'true'. Now let's review available entity filters and key filters syntax:\n\n # Entity Filters\nEntity Filter body depends on the 'type' parameter. Let's review available entity filter types. In fact, they do correspond to available dashboard aliases.\n\n## Single Entity\n\nAllows to filter only one entity based on the id. For example, this entity filter selects certain device:\n\n```json\n{\n  \"type\": \"singleEntity\",\n  \"singleEntity\": {\n    \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n    \"entityType\": \"DEVICE\"\n  }\n}\n```\n\n## Entity List Filter\n\nAllows to filter entities of the same type using their ids. For example, this entity filter selects two devices:\n\n```json\n{\n  \"type\": \"entityList\",\n  \"entityType\": \"DEVICE\",\n  \"entityList\": [\n    \"e6501f30-2a7a-11ec-94eb-213c95f54092\",\n    \"e6657bf0-2a7a-11ec-94eb-213c95f54092\"\n  ]\n}\n```\n\n## Entity Name Filter\n\nAllows to filter entities of the same type using the **'starts with'** expression over entity name. For example, this entity filter selects all devices which name starts with 'Air Quality':\n\n```json\n{\n  \"type\": \"entityName\",\n  \"entityType\": \"DEVICE\",\n  \"entityNameFilter\": \"Air Quality\"\n}\n```\n\n## Entity Type Filter\n\nAllows to filter entities based on their type (CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, etc)For example, this entity filter selects all tenant customers:\n\n```json\n{\n  \"type\": \"entityType\",\n  \"entityType\": \"CUSTOMER\"\n}\n```\n\n## Asset Type Filter\n\nAllows to filter assets based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'charging station' assets which name starts with 'Tesla':\n\n```json\n{\n  \"type\": \"assetType\",\n  \"assetType\": \"charging station\",\n  \"assetNameFilter\": \"Tesla\"\n}\n```\n\n## Device Type Filter\n\nAllows to filter devices based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Temperature Sensor' devices which name starts with 'ABC':\n\n```json\n{\n  \"type\": \"deviceType\",\n  \"deviceType\": \"Temperature Sensor\",\n  \"deviceNameFilter\": \"ABC\"\n}\n```\n\n## Edge Type Filter\n\nAllows to filter edge instances based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Factory' edge instances which name starts with 'Nevada':\n\n```json\n{\n  \"type\": \"edgeType\",\n  \"edgeType\": \"Factory\",\n  \"edgeNameFilter\": \"Nevada\"\n}\n```\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```\n\n## Api Usage Filter\n\nAllows to query for Api Usage based on optional customer id. If the customer id is not set, returns current tenant API usage.For example, this entity filter selects the 'Api Usage' entity for customer with id 'e6501f30-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n  \"type\": \"apiUsageState\",\n  \"customerId\": {\n    \"id\": \"d521edb0-2a7a-11ec-94eb-213c95f54092\",\n    \"entityType\": \"CUSTOMER\"\n  }\n}\n```\n\n## Relations Query Filter\n\nAllows to filter entities that are related to the provided root entity. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'filter' object allows you to define the relation type and set of acceptable entity types to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only those who match the 'filters'.\n\nFor example, this entity filter selects all devices and assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092':\n\n```json\n{\n  \"type\": \"relationsQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"filters\": [\n    {\n      \"relationType\": \"Contains\",\n      \"entityTypes\": [\n        \"DEVICE\",\n        \"ASSET\"\n      ]\n    }\n  ]\n}\n```\n\n## Asset Search Query\n\nAllows to filter assets that are related to the provided root entity. Filters related assets based on the relation type and set of asset types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'assetTypes' defines the type of the asset to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only assets that match 'relationType' and 'assetTypes' conditions.\n\nFor example, this entity filter selects 'charging station' assets which are related to the asset with id 'e51de0c0-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"assetSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e51de0c0-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"relationType\": \"Contains\",\n  \"assetTypes\": [\n    \"charging station\"\n  ]\n}\n```\n\n## Device Search Query\n\nAllows to filter devices that are related to the provided root entity. Filters related devices based on the relation type and set of device types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Charging port' and 'Air Quality Sensor' devices which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"deviceSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 2,\n  \"fetchLastLevelOnly\": true,\n  \"relationType\": \"Contains\",\n  \"deviceTypes\": [\n    \"Air Quality Sensor\",\n    \"Charging port\"\n  ]\n}\n```\n\n## Entity View Query\n\nAllows to filter entity views that are related to the provided root entity. Filters related entity views based on the relation type and set of entity view types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'entityViewTypes' defines the type of the entity view to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Concrete mixer' entity views which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"entityViewSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 1,\n  \"fetchLastLevelOnly\": false,\n  \"relationType\": \"Contains\",\n  \"entityViewTypes\": [\n    \"Concrete mixer\"\n  ]\n}\n```\n\n## Edge Search Query\n\nAllows to filter edge instances that are related to the provided root entity. Filters related edge instances based on the relation type and set of edge types. Possible direction values are 'TO' and 'FROM'. The 'maxLevel' defines how many relation levels should the query search 'recursively'. Assuming the 'maxLevel' is > 1, the 'fetchLastLevelOnly' defines either to return all related entities or only entities that are on the last level of relations. The 'relationType' defines the type of the relation to search for. The 'deviceTypes' defines the type of the device to search for. The relation query calculates all related entities, even if they are filtered using different relation types, and then extracts only devices that match 'relationType' and 'deviceTypes' conditions.\n\nFor example, this entity filter selects 'Factory' edge instances which are related to the asset with id 'e52b0020-2a7a-11ec-94eb-213c95f54092' using 'Contains' relation:\n\n```json\n{\n  \"type\": \"deviceSearchQuery\",\n  \"rootEntity\": {\n    \"entityType\": \"ASSET\",\n    \"id\": \"e52b0020-2a7a-11ec-94eb-213c95f54092\"\n  },\n  \"direction\": \"FROM\",\n  \"maxLevel\": 2,\n  \"fetchLastLevelOnly\": true,\n  \"relationType\": \"Contains\",\n  \"edgeTypes\": [\n    \"Factory\"\n  ]\n}\n```\n\n # Key Filters\nKey Filter allows you to define complex logical expressions over entity field, attribute or latest time series value. The filter is defined using 'key', 'valueType' and 'predicate' objects. Single Entity Query may have zero, one or multiple predicates. If multiple filters are defined, they are evaluated using logical 'AND'. The example below checks that temperature of the entity is above 20 degrees:\n\n```json\n{\n  \"key\": {\n    \"type\": \"TIME_SERIES\",\n    \"key\": \"temperature\"\n  },\n  \"valueType\": \"NUMERIC\",\n  \"predicate\": {\n    \"operation\": \"GREATER\",\n    \"value\": {\n      \"defaultValue\": 20,\n      \"dynamicValue\": null\n    },\n    \"type\": \"NUMERIC\"\n  }\n}\n```\n\n Now let's review 'key', 'valueType' and 'predicate' objects in detail.\n\n## Filter Key\n\nFilter Key defines either entity field, attribute or telemetry. It is a JSON object that consists the key name and type. The following filter key types are supported: \n\n * 'CLIENT_ATTRIBUTE' - used for client attributes; \n * 'SHARED_ATTRIBUTE' - used for shared attributes; \n * 'SERVER_ATTRIBUTE' - used for server attributes; \n * 'ATTRIBUTE' - used for any of the above; \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 * 'ALARM_FIELD' - similar to entity field, but is used in alarm queries only; \n\n\n Let'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## 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    \"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        \"defaultValue\": 10,\n        \"dynamicValue\": null\n      },\n      \"type\": \"NUMERIC\"\n    },\n    {\n      \"operation\": \"GREATER\",\n      \"value\": {\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        \"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            \"defaultValue\": 50,\n            \"dynamicValue\": null\n          },\n          \"type\": \"NUMERIC\"\n        },\n        {\n          \"operation\": \"LESS\",\n          \"value\": {\n            \"defaultValue\": 60,\n            \"dynamicValue\": null\n          },\n          \"type\": \"NUMERIC\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n You 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 user that is performing the API call. See example below: \n\n```json\n{\n  \"operation\": \"GREATER\",\n  \"value\": {\n    \"defaultValue\": 0,\n    \"dynamicValue\": {\n      \"sourceType\": \"CURRENT_USER\",\n      \"sourceAttribute\": \"temperatureThreshold\"\n    }\n  },\n  \"type\": \"NUMERIC\"\n}\n```\n\n Note that you may use 'CURRENT_USER', '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.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"countEntitiesByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityCountQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"integer","format":"int64"}}}}}}},"/api/entities/vc/version":{"get":{"tags":["entities-version-control-controller"],"summary":"List all versions (listVersions)","description":"Lists all available versions in a branch for all entity types. \nIf specified branch does not exist - empty page data will be returned. The response format is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"listVersions","parameters":[{"name":"branch","in":"query","description":"The name of the working branch, for example 'master'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity version name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["timestamp"]}},{"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/PageDataEntityVersion"}}}}}},"post":{"tags":["entities-version-control-controller"],"summary":"Save entities version (saveEntitiesVersion)","description":"Creates a new version of entities (or a single entity) by request.\nSupported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE.\n\nThere are two available types of request: `SINGLE_ENTITY` and `COMPLEX`. Each of them contains version name (`versionName`) and name of a branch (`branch`) to create version (commit) in. If specified branch does not exists in a remote repo, then new empty branch will be created. Request of the `SINGLE_ENTITY` type has id of an entity (`entityId`) and additional configuration (`config`) which has following options: \n- `saveRelations` - whether to add inbound and outbound relations of type COMMON to created entity version;\n- `saveAttributes` - to save attributes of server scope (and also shared scope for devices);\n- `saveCredentials` - when saving a version of a device, to add its credentials to the version.\n\nAn example of a `SINGLE_ENTITY` version create request:\n```json\n{\n  \"type\": \"SINGLE_ENTITY\",\n\n  \"versionName\": \"Version 1.0\",\n  \"branch\": \"dev\",\n\n  \"entityId\": {\n    \"entityType\": \"DEVICE\",\n    \"id\": \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n  },\n  \"config\": {\n    \"saveRelations\": true,\n    \"saveAttributes\": true,\n    \"saveCredentials\": false\n  }\n}\n```\n\nSecond request type (`COMPLEX`), additionally to `branch` and `versionName`, contains following properties:\n- `entityTypes` - a structure with entity types to export and configuration for each entity type;    this configuration has all the options available for `SINGLE_ENTITY` and additionally has these ones: \n     - `allEntities` and `entityIds` - if you want to save the version of all entities of the entity type         then set `allEntities` param to true, otherwise set it to false and specify the list of specific entities (`entityIds`);\n     - `syncStrategy` - synchronization strategy to use for this entity type: when set to `OVERWRITE`         then the list of remote entities of this type will be overwritten by newly added entities. If set to         `MERGE` - existing remote entities of this entity type will not be removed, new entities will just         be added on top (or existing remote entities will be updated).\n- `syncStrategy` - default synchronization strategy to use when it is not specified for an entity type.\n\nExample for this type of request:\n```json\n{\n  \"type\": \"COMPLEX\",\n\n  \"versionName\": \"Devices and profiles: release 2\",\n  \"branch\": \"master\",\n\n  \"syncStrategy\": \"OVERWRITE\",\n  \"entityTypes\": {\n    \"DEVICE\": {\n      \"syncStrategy\": null,\n      \"allEntities\": true,\n      \"saveRelations\": true,\n      \"saveAttributes\": true,\n      \"saveCredentials\": true\n    },\n    \"DEVICE_PROFILE\": {\n      \"syncStrategy\": \"MERGE\",\n      \"allEntities\": false,\n      \"entityIds\": [\n        \"b79448e0-d4f4-11ec-847b-0f432358ab48\"\n      ],\n      \"saveRelations\": true\n    }\n  }\n}\n```\n\nResponse wil contain generated request UUID, that can be then used to retrieve status of operation via `getVersionCreateRequestStatus`.\n\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveEntitiesVersion","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ComplexVersionCreateRequest"},{"$ref":"#/components/schemas/SingleEntityVersionCreateRequest"}]}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"uuid"}}}}}}},"/api/entities/vc/entity":{"post":{"tags":["entities-version-control-controller"],"summary":"Load entities version (loadEntitiesVersion)","description":"Loads specific version of remote entities (or single entity) by request. Supported entity types: CUSTOMER, ASSET, RULE_CHAIN, DASHBOARD, DEVICE_PROFILE, DEVICE, ENTITY_VIEW, WIDGETS_BUNDLE.\n\nThere are multiple types of request. Each of them requires branch name (`branch`) and version id (`versionId`). Request of type `SINGLE_ENTITY` is needed to restore a concrete version of a specific entity. It contains id of a remote entity (`externalEntityId`) and additional configuration (`config`):\n- `loadRelations` - to update relations list (in case `saveRelations` option was enabled during version creation);\n- `loadAttributes` - to load entity attributes (if `saveAttributes` config option was enabled);\n- `loadCredentials` - to update device credentials (if `saveCredentials` option was enabled during version creation).\n\nAn example of such request:\n```json\n{\n  \"type\": \"SINGLE_ENTITY\",\n  \n  \"branch\": \"dev\",\n  \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n  \n  \"externalEntityId\": {\n    \"entityType\": \"DEVICE\",\n    \"id\": \"b7944123-d4f4-11ec-847b-0f432358ab48\"\n  },\n  \"config\": {\n    \"loadRelations\": false,\n    \"loadAttributes\": true,\n    \"loadCredentials\": true\n  }\n}\n```\n\nAnother request type (`ENTITY_TYPE`) is needed to load specific version of the whole entity types. It contains a structure with entity types to load and configs for each entity type (`entityTypes`). For each specified entity type, the method will load all remote entities of this type that are present at the version. A config for each entity type contains the same options as in `SINGLE_ENTITY` request type, and additionally contains following options:\n- `removeOtherEntities` - to remove local entities that are not present on the remote - basically to    overwrite local entity type with the remote one;\n- `findExistingEntityByName` - when you are loading some remote entities that are not yet present at this tenant,    try to find existing entity by name and update it rather than create new.\n\nHere is an example of the request to completely restore version of the whole device entity type:\n```json\n{\n  \"type\": \"ENTITY_TYPE\",\n\n  \"branch\": \"dev\",\n  \"versionId\": \"b3c28d722d328324c7c15b0b30047b0c40011cf7\",\n\n  \"entityTypes\": {\n    \"DEVICE\": {\n      \"removeOtherEntities\": true,\n      \"findExistingEntityByName\": false,\n      \"loadRelations\": true,\n      \"loadAttributes\": true,\n      \"loadCredentials\": true\n    }\n  }\n}\n```\n\nThe response will contain generated request UUID that is to be used to check the status of operation via `getVersionLoadRequestStatus`.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"loadEntitiesVersion","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EntityTypeVersionLoadRequest"},{"$ref":"#/components/schemas/SingleEntityVersionLoadRequest"}]}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"uuid"}}}}}}},"/api/edqs/system/request":{"post":{"tags":["entity-query-controller"],"operationId":"processSystemEdqsRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToCoreEdqsRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/edges":{"get":{"tags":["edge-controller"],"summary":"Get Edges By Ids (getEdgesByIds)","description":"Requested edges must be owned by tenant or assigned to customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEdges","parameters":[{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"edgeIds","in":"query","description":"A list of edges ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/Edge"}},{"$ref":"#/components/schemas/PageDataEdge"}]}}}}}},"post":{"tags":["edge-controller"],"summary":"Find related edges (findByQuery)","description":"Returns all edges that are related to the specific entity. The entity id, relation type, edge types, depth of the search, and other query parameters defined using complex 'EdgeSearchQuery' object. See 'Model' tab of the Parameters for more info.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"findByQuery_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdgeSearchQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Edge"}}}}}}}},"/api/edge":{"post":{"tags":["edge-controller"],"summary":"Create Or Update Edge (saveEdge)","description":"Create or update the Edge. When creating edge, platform generates Edge Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created edge id will be present in the response. Specify existing Edge id to update the edge. Referencing non-existing Edge Id will cause 'Not Found' error.\n\nEdge name is unique in the scope of tenant. Use unique identifiers like MAC or IMEI for the edge names and non-unique 'label' field for user-friendly visualization purposes.Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Edge entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveEdge","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}}},"/api/edge/{edgeId}/{ruleChainId}/root":{"post":{"tags":["edge-controller"],"summary":"Set root rule chain for provided edge (setEdgeRootRuleChain)","description":"Change root rule chain of the edge to the new provided rule chain. \nThis operation will send a notification to update root rule chain on remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setEdgeRootRuleChain","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}}},"/api/edge/{edgeId}/ruleChain/{ruleChainId}":{"post":{"tags":["rule-chain-controller"],"summary":"Assign rule chain to edge (assignRuleChainToEdge)","description":"Creates assignment of an existing rule chain 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 rule chain (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once rule chain will be delivered to edge service, it's going to start processing messages locally. \n\nOnly rule chain with type 'EDGE' can be assigned to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignRuleChainToEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"ruleChainId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}},"delete":{"tags":["rule-chain-controller"],"summary":"Unassign rule chain from edge (unassignRuleChainFromEdge)","description":"Clears assignment of the rule chain 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 rule chain (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 rule chain locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignRuleChainFromEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"ruleChainId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}}},"/api/edge/{edgeId}/entityView/{entityViewId}":{"post":{"tags":["entity-view-controller"],"summary":"Assign entity view to edge (assignEntityViewToEdge)","description":"Creates assignment of an existing entity view 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 entity view (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once entity view will be delivered to edge service, it's going to be available for usage on remote edge instance.","operationId":"assignEntityViewToEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"entityViewId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}},"delete":{"tags":["entity-view-controller"],"summary":"Unassign entity view from edge (unassignEntityViewFromEdge)","description":"Clears assignment of the entity view 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 entity view (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 entity view locally.","operationId":"unassignEntityViewFromEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"entityViewId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}}},"/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.\n\nAvailable 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.\n\nAvailable 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/edge/{edgeId}/dashboard/{dashboardId}":{"post":{"tags":["dashboard-controller"],"summary":"Assign dashboard to edge (assignDashboardToEdge)","description":"Creates assignment of an existing dashboard 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 dashboard (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once dashboard will be delivered to edge service, it's going to be available for usage on remote edge instance.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignDashboardToEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}},"delete":{"tags":["dashboard-controller"],"summary":"Unassign dashboard from edge (unassignDashboardFromEdge)","description":"Clears assignment of the dashboard 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 dashboard (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 dashboard locally.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignDashboardFromEdge","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"dashboardId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/edge/{edgeId}/asset/{assetId}":{"post":{"tags":["asset-controller"],"summary":"Assign asset to edge (assignAssetToEdge)","description":"Creates assignment of an existing asset 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 asset (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once asset will be delivered to edge service, it's going to be available for usage on remote edge instance.","operationId":"assignAssetToEdge","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":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}},"delete":{"tags":["asset-controller"],"summary":"Unassign asset from edge (unassignAssetFromEdge)","description":"Clears assignment of the asset 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 asset (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 asset locally.","operationId":"unassignAssetFromEdge","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":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}}},"/api/edge/sync/{edgeId}":{"post":{"tags":["edge-controller"],"summary":"Sync edge (syncEdge)","description":"Starts synchronization process between edge and cloud. \nAll entities that are assigned to particular edge are going to be send to remote edge service.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"syncEdge","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/edge/bulk_import":{"post":{"tags":["edge-controller"],"summary":"Import the bulk of edges (processEdgesBulkImport)","description":"There's an ability to import the bulk of edges using the only .csv file.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"processEdgesBulkImport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportResultEdge"}}}}}}},"/api/domain":{"post":{"tags":["domain-controller"],"summary":"Save or Update Domain (saveDomain)","description":"Create or update the Domain. When creating domain, platform generates Domain Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Domain Id will be present in the response. Specify existing Domain Id to update the domain. Referencing non-existing Domain Id will cause 'Not Found' error.\n\nDomain name is unique for entire platform setup.\n\n\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveDomain","parameters":[{"name":"oauth2ClientIds","in":"query","description":"A list of oauth2 client registration ids, separated by comma ','","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domain"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domain"}}}}}}},"/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.\n\nAvailable 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.\n\nAvailable 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: <b>\"Access token\"</b> with <b>device ID</b> and with <b>device ID</b> 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: <b>\"X509\"</b> with <b>device profile ID</b> below: \n\nNote: <b>credentialsId</b> -  format <b>Sha3Hash</b>, <b>certificateValue</b> - format <b>PEM</b> (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: <b>\"MQTT_BASIC\"</b> with <b>device profile ID</b> 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 <b>LwM2M</b> device and <b>RPK</b> 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).\nRemove '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.\n\nAvailable 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: <b>\"Access token\"</b> with <b>device profile ID</b> 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: <b>\"Access token\"</b> with  <b>device profile default</b> 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: <b>\"X509\"</b> with <b>device profile ID</b> below: \n\nNote: <b>credentialsId</b> -  format <b>Sha3Hash</b>, <b>certificateValue</b> - format <b>PEM</b> (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: <b>\"MQTT_BASIC\"</b> with <b>device profile ID</b> 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 <b>LwM2M</b> device and <b>RPK</b> 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/dashboard":{"post":{"tags":["dashboard-controller"],"summary":"Create Or Update Dashboard (saveDashboard)","description":"Create or update the Dashboard. When creating dashboard, platform generates Dashboard Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Dashboard id will be present in the response. Specify existing Dashboard id to update the dashboard. Referencing non-existing dashboard Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Dashboard entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveDashboard","parameters":[{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"description":"A JSON value representing the dashboard.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/dashboard/{dashboardId}/customers":{"post":{"tags":["dashboard-controller"],"summary":"Update the Dashboard Customers (updateDashboardCustomers)","description":"Updates the list of Customers that this Dashboard is assigned to. Removes previous assignments to customers that are not in the provided list. Returns the Dashboard object. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"updateDashboardCustomers","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"JSON array with the list of customer ids, or empty to remove all customers","items":{"type":"string"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/dashboard/{dashboardId}/customers/remove":{"post":{"tags":["dashboard-controller"],"summary":"Remove the Dashboard Customers (removeDashboardCustomers)","description":"Removes the list of Customers from the existing list of assignments for the Dashboard. Keeps other assignments to customers that are not in the provided list. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"removeDashboardCustomers","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"JSON array with the list of customer ids","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/dashboard/{dashboardId}/customers/add":{"post":{"tags":["dashboard-controller"],"summary":"Adds the Dashboard Customers (addDashboardCustomers)","description":"Adds the list of Customers to the existing list of assignments for the Dashboard. Keeps previous assignments to customers that are not in the provided list. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"addDashboardCustomers","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"JSON array with the list of customer ids","items":{"type":"string"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/customer":{"post":{"tags":["customer-controller"],"summary":"Create or update Customer (saveCustomer)","description":"Creates or Updates the Customer. When creating customer, platform generates Customer Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Customer Id will be present in the response. Specify existing Customer Id to update the Customer. Referencing non-existing Customer Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Customer entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveCustomer","parameters":[{"name":"nameConflictPolicy","in":"query","description":"Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY.  If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists.  UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.","required":false,"schema":{"type":"string","default":"FAIL","enum":["FAIL","UNIQUIFY"]}},{"name":"uniquifySeparator","in":"query","description":"Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.","required":false,"schema":{"type":"string","default":"_"}},{"name":"uniquifyStrategy","in":"query","description":"Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.","required":false,"schema":{"type":"string","default":"RANDOM","enum":["RANDOM","INCREMENTAL"]}}],"requestBody":{"description":"A JSON value representing the customer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}}}}},"/api/customer/{customerId}/entityView/{entityViewId}":{"post":{"tags":["entity-view-controller"],"summary":"Assign Entity View to customer (assignEntityViewToCustomer)","description":"Creates assignment of the Entity View to customer. Customer will be able to query Entity View afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignEntityViewToCustomer","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":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}}},"/api/customer/{customerId}/edge/{edgeId}":{"post":{"tags":["edge-controller"],"summary":"Assign edge to customer (assignEdgeToCustomer)","description":"Creates assignment of the edge to customer. Customer will be able to query edge afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignEdgeToCustomer","parameters":[{"name":"customerId","in":"path","description":"A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}}},"/api/customer/{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.\n\nAvailable 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/{customerId}/dashboard/{dashboardId}":{"post":{"tags":["dashboard-controller"],"summary":"Assign the Dashboard (assignDashboardToCustomer)","description":"Assign the Dashboard to specified Customer or do nothing if the Dashboard is already assigned to that Customer. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignDashboardToCustomer","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":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}},"delete":{"tags":["dashboard-controller"],"summary":"Unassign the Dashboard (unassignDashboardFromCustomer)","description":"Unassign the Dashboard from specified Customer or do nothing if the Dashboard is already assigned to that Customer. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignDashboardFromCustomer","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":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/customer/{customerId}/asset/{assetId}":{"post":{"tags":["asset-controller"],"summary":"Assign asset to customer (assignAssetToCustomer)","description":"Creates assignment of the asset to customer. Customer will be able to query asset afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignAssetToCustomer","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":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}}},"/api/customer/public/entityView/{entityViewId}":{"post":{"tags":["entity-view-controller"],"summary":"Make entity view publicly available (assignEntityViewToPublicCustomer)","description":"Entity View 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 entity view.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignEntityViewToPublicCustomer","parameters":[{"name":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}}},"/api/customer/public/edge/{edgeId}":{"post":{"tags":["edge-controller"],"summary":"Make edge publicly available (assignEdgeToPublicCustomer)","description":"Edge will be available for non-authorized (not logged-in) users. This is useful to create dashboards that you plan to share/embed on a publicly available website. However, users that are logged-in and belong to different tenant will not be able to access the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignEdgeToPublicCustomer","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}}},"/api/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.\n\nAvailable 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/public/dashboard/{dashboardId}":{"post":{"tags":["dashboard-controller"],"summary":"Assign the Dashboard to Public Customer (assignDashboardToPublicCustomer)","description":"Assigns the dashboard to a special, auto-generated 'Public' Customer. Once assigned, unauthenticated users may browse the dashboard. This method is useful if you like to embed the dashboard on public web pages to be available for users that are not logged in. Be aware that making the dashboard public does not mean that it automatically makes all devices and assets you use in the dashboard to be public.Use [assign Asset to Public Customer](#!/asset-controller/assignAssetToPublicCustomerUsingPOST) and [assign Device to Public Customer](#!/device-controller/assignDeviceToPublicCustomerUsingPOST) for this purpose. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignDashboardToPublicCustomer","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}},"delete":{"tags":["dashboard-controller"],"summary":"Unassign the Dashboard from Public Customer (unassignDashboardFromPublicCustomer)","description":"Unassigns the dashboard from a special, auto-generated 'Public' Customer. Once unassigned, unauthenticated users may no longer browse the dashboard. Returns the Dashboard object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignDashboardFromPublicCustomer","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}}}}},"/api/customer/public/asset/{assetId}":{"post":{"tags":["asset-controller"],"summary":"Make asset publicly available (assignAssetToPublicCustomer)","description":"Asset 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 asset.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"assignAssetToPublicCustomer","parameters":[{"name":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}}},"/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.\n\nAvailable 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/calculatedField":{"post":{"tags":["calculated-field-controller"],"summary":"Create Or Update Calculated Field (saveCalculatedField)","description":"Creates or Updates the Calculated Field. When creating calculated field, platform generates Calculated Field Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Calculated Field Id will be present in the response. Specify existing Calculated Field Id to update the calculated field. Referencing non-existing Calculated Field Id will cause 'Not Found' error. Remove 'id', 'tenantId' from the request body example (below) to create new Calculated Field entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveCalculatedField","requestBody":{"description":"A JSON value representing the calculated field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculatedField"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculatedField"}}}}}}},"/api/calculatedField/testScript":{"post":{"tags":["calculated-field-controller"],"summary":"Test Script expression","description":"Execute the Script expression and return the result. The format of request: \n\n```json\n{\n  \"expression\": \"var temp = 0; foreach(element: temperature.values) {temp += element.value;} var avgTemperature = temp / temperature.values.size(); var adjustedTemperature = avgTemperature + 0.1 * humidity.value; return {\\\"adjustedTemperature\\\": adjustedTemperature};\",\n  \"arguments\": {\n    \"temperature\": {\n      \"type\": \"TS_ROLLING\",\n      \"timeWindow\": {\n        \"startTs\": 1739775630002,\n        \"endTs\": 65432211,\n        \"limit\": 5\n      },\n      \"values\": [\n        { \"ts\": 1739775639851, \"value\": 23 },\n        { \"ts\": 1739775664561, \"value\": 43 },\n        { \"ts\": 1739775713079, \"value\": 15 },\n        { \"ts\": 1739775999522, \"value\": 34 },\n        { \"ts\": 1739776228452, \"value\": 22 }\n      ]\n    },\n    \"humidity\": { \"type\": \"SINGLE_VALUE\", \"ts\": 1739776478057, \"value\": 23 }\n  }\n}\n```\n\n Expected result JSON contains \"output\" and \"error\".\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"testScript_1","requestBody":{"description":"Test calculated field TBEL expression.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth-controller"],"summary":"Logout (logout)","description":"Special API call to record the 'logout' of the user to the Audit Logs. Since platform uses [JWT](https://jwt.io/), the actual logout is the procedure of clearing the [JWT](https://jwt.io/) token on the client side. ","operationId":"logout","responses":{"200":{"description":"OK"}}}},"/api/auth/changePassword":{"post":{"tags":["auth-controller"],"summary":"Change password for current User (changePassword)","description":"Change the password for the User which credentials are used to perform this REST API call. Be aware that previously generated [JWT](https://jwt.io/) tokens will be still valid until they expire.","operationId":"changePassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/auth/2fa/verification/send":{"post":{"tags":["two-factor-auth-controller"],"summary":"Request 2FA verification code (requestTwoFaVerificationCode)","description":"Request 2FA verification code.\n\nTo make a request to this endpoint, you need an access token with the scope of PRE_VERIFICATION_TOKEN, which is issued on username/password auth if 2FA is enabled.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings). Will return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.","operationId":"requestTwoFaVerificationCode","parameters":[{"name":"providerType","in":"query","required":true,"schema":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]}}],"responses":{"200":{"description":"OK"}}}},"/api/auth/2fa/verification/check":{"post":{"tags":["two-factor-auth-controller"],"summary":"Check 2FA verification code (checkTwoFaVerificationCode)","description":"Checks 2FA verification code, and if it is correct the method returns a regular access and refresh token pair.\n\nThe API method is rate limited (using rate limit config from TwoFactorAuthSettings), and also will block a user after X unsuccessful verification attempts if such behavior is configured (in TwoFactorAuthSettings).\n\nWill return a Bad Request error if provider is not configured for usage, and Too Many Requests error if rate limits are exceeded.","operationId":"checkTwoFaVerificationCode","parameters":[{"name":"providerType","in":"query","required":true,"schema":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]}},{"name":"verificationCode","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/auth/2fa/login":{"post":{"tags":["two-factor-auth-controller"],"summary":"Get regular token pair after successfully configuring 2FA","description":"Checks 2FA is configured, returning token pair on success.","operationId":"authenticateByTwoFaConfigurationToken","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/assets":{"get":{"tags":["asset-controller"],"summary":"Get Assets By Ids (getAssetsByIds)","description":"Requested assets must be owned by tenant or assigned to customer which user is performing the request. ","operationId":"getAssetsByIds","parameters":[{"name":"assetIds","in":"query","description":"A list of assets 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/Asset"}}}}}}},"post":{"tags":["asset-controller"],"summary":"Find related assets (findByQuery)","description":"Returns all assets that are related to the specific entity. The entity id, relation type, asset types, depth of the search, and other query parameters defined using complex 'AssetSearchQuery' object. See 'Model' tab of the Parameters for more info.","operationId":"findByQuery_4","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetSearchQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}}}}}}}},"/api/asset":{"post":{"tags":["asset-controller"],"summary":"Create Or Update Asset (saveAsset)","description":"Creates or Updates the Asset. When creating asset, platform generates Asset Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Asset id will be present in the response. Specify existing Asset id to update the asset. Referencing non-existing Asset Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Asset entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveAsset","parameters":[{"name":"nameConflictPolicy","in":"query","description":"Optional value of name conflict policy. Possible values: FAIL or UNIQUIFY.  If omitted, FAIL policy is applied. FAIL policy implies exception will be thrown if an entity with the same name already exists.  UNIQUIFY policy appends a suffix to the entity name, if a name conflict occurs.","required":false,"schema":{"type":"string","default":"FAIL","enum":["FAIL","UNIQUIFY"]}},{"name":"uniquifySeparator","in":"query","description":"Optional value of name suffix separator used by UNIQUIFY policy. By default, underscore separator is used. For example, strategy is UNIQUIFY, separator is '-'; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-7fsh4f'.","required":false,"schema":{"type":"string","default":"_"}},{"name":"uniquifyStrategy","in":"query","description":"Optional value of uniquify strategy used by UNIQUIFY policy. Possible values: RANDOM or INCREMENTAL. By default, RANDOM strategy is used, which means random alphanumeric string will be added as a suffix to entity name. INCREMENTAL implies the first possible number starting from 1 will be added as a name suffix. For example, strategy is UNIQUIFY, uniquify strategy is INCREMENTAL; if a name conflict occurs for entity name 'test-name', created entity will have name like 'test-name-1.","required":false,"schema":{"type":"string","default":"RANDOM","enum":["RANDOM","INCREMENTAL"]}}],"requestBody":{"description":"A JSON value representing the asset.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}}},"/api/assetProfile":{"post":{"tags":["asset-profile-controller"],"summary":"Create Or Update Asset Profile (saveAssetProfile)","description":"Create or update the Asset Profile. When creating asset profile, platform generates asset profile id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created asset profile id will be present in the response. Specify existing asset profile id to update the asset profile. Referencing non-existing asset profile Id will cause 'Not Found' error. \n\nAsset profile name is unique in the scope of tenant. Only one 'default' asset profile may exist in scope of tenant. Remove 'id', 'tenantId' from the request body example (below) to create new Asset Profile entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveAssetProfile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetProfile"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetProfile"}}}}}}},"/api/assetProfile/{assetProfileId}/default":{"post":{"tags":["asset-profile-controller"],"summary":"Make Asset Profile Default (setDefaultAssetProfile)","description":"Marks asset profile as default within a tenant scope.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"setDefaultAssetProfile","parameters":[{"name":"assetProfileId","in":"path","description":"A string value representing the asset 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/AssetProfile"}}}}}}},"/api/asset/bulk_import":{"post":{"tags":["asset-controller"],"summary":"Import the bulk of assets (processAssetsBulkImport)","description":"There's an ability to import the bulk of assets using the only .csv file.","operationId":"processAssetsBulkImport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportResultAsset"}}}}}}},"/api/apiKey":{"post":{"tags":["api-key-controller"],"summary":"Save API key for user (saveApiKey)","description":"Creates an API key for the given user and returns the token ONCE as 'ApiKey <value>'.\n\nAvailable for any authorized user. ","operationId":"saveApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyInfo"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}}}}},"/api/alarmsQuery/find":{"post":{"tags":["entity-query-controller"],"summary":"Find Alarms by Query","description":"This method description defines how Alarm Data Query extends the Entity Data Query. See method 'Find Entity Data by Query' first to get the info about 'Entity Data Query'.\n\n The platform will first search the entities that match the entity and key filters. Then, the platform will use 'Alarm Page Link' to filter the alarms related to those entities. Finally, platform fetch the properties of alarm that are defined in the **'alarmFields'** and combine them with the other entity, attribute and latest time series fields to return the result. \n\n See example of the alarm query below. The query will search first 100 active alarms with type 'Temperature Alarm' or 'Fire Alarm' for any device with current temperature > 0. The query will return combination of the entity fields: name of the device, device model and latest temperature reading and alarms fields: createdTime, type, severity and status: \n\n```json\n{\n  \"entityFilter\": {\n    \"type\": \"entityType\",\n    \"resolveMultiple\": true,\n    \"entityType\": \"DEVICE\"\n  },\n  \"pageLink\": {\n    \"page\": 0,\n    \"pageSize\": 100,\n    \"textSearch\": null,\n    \"searchPropagatedAlarms\": false,\n    \"statusList\": [\n      \"ACTIVE\"\n    ],\n    \"severityList\": [\n      \"CRITICAL\",\n      \"MAJOR\"\n    ],\n    \"typeList\": [\n      \"Temperature Alarm\",\n      \"Fire Alarm\"\n    ],\n    \"sortOrder\": {\n      \"key\": {\n        \"key\": \"createdTime\",\n        \"type\": \"ALARM_FIELD\"\n      },\n      \"direction\": \"DESC\"\n    },\n    \"timeWindow\": 86400000\n  },\n  \"keyFilters\": [\n    {\n      \"key\": {\n        \"type\": \"TIME_SERIES\",\n        \"key\": \"temperature\"\n      },\n      \"valueType\": \"NUMERIC\",\n      \"predicate\": {\n        \"operation\": \"GREATER\",\n        \"value\": {\n          \"defaultValue\": 0,\n          \"dynamicValue\": null\n        },\n        \"type\": \"NUMERIC\"\n      }\n    }\n  ],\n  \"alarmFields\": [\n    {\n      \"type\": \"ALARM_FIELD\",\n      \"key\": \"createdTime\"\n    },\n    {\n      \"type\": \"ALARM_FIELD\",\n      \"key\": \"type\"\n    },\n    {\n      \"type\": \"ALARM_FIELD\",\n      \"key\": \"severity\"\n    },\n    {\n      \"type\": \"ALARM_FIELD\",\n      \"key\": \"status\"\n    }\n  ],\n  \"entityFields\": [\n    {\n      \"type\": \"ENTITY_FIELD\",\n      \"key\": \"name\"\n    }\n  ],\n  \"latestValues\": [\n    {\n      \"type\": \"ATTRIBUTE\",\n      \"key\": \"model\"\n    },\n    {\n      \"type\": \"TIME_SERIES\",\n      \"key\": \"temperature\"\n    }\n  ]\n}\n```","operationId":"findAlarmDataByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmDataQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAlarmData"}}}}}}},"/api/alarmsQuery/count":{"post":{"tags":["entity-query-controller"],"summary":"Count Alarms by Query (countAlarmsByQuery)","description":"Returns the number of alarms that match the query definition.","operationId":"countAlarmsByQuery","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmCountQuery"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"integer","format":"int64"}}}}}}},"/api/alarm":{"post":{"tags":["alarm-controller"],"summary":"Create or Update Alarm (saveAlarm)","description":"Creates or Updates the Alarm. When creating alarm, platform generates Alarm Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm id will be present in the response. Specify existing Alarm id to update the alarm. Referencing non-existing Alarm Id will cause 'Not Found' error. \n\nPlatform also deduplicate the alarms based on the entity id of originator and alarm 'type'. For example, if the user or system component create the alarm with the type 'HighTemperature' for device 'Device A' the new active alarm is created. If the user tries to create 'HighTemperature' alarm for the same device again, the previous alarm will be updated (the 'end_ts' will be set to current timestamp). If the user clears the alarm (see 'Clear Alarm(clearAlarm)'), than new alarm with the same type and same device may be created. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Alarm entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveAlarm","requestBody":{"description":"A JSON value representing the alarm.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alarm"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alarm"}}}}}}},"/api/alarm/{alarmId}/comment":{"get":{"tags":["alarm-comment-controller"],"summary":"Get Alarm comments (getAlarmComments)","description":"Returns a page of alarm comments for specified alarm. 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":"getAlarmComments","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","id"]}},{"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/PageDataAlarmCommentInfo"}}}}}},"post":{"tags":["alarm-comment-controller"],"summary":"Create or update Alarm Comment ","description":"Creates or Updates the Alarm Comment. When creating comment, platform generates Alarm Comment Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Alarm Comment id will be present in the response. Specify existing Alarm Comment id to update the alarm. Referencing non-existing Alarm Comment Id will cause 'Not Found' error. \n\n To create new Alarm comment entity it is enough to specify 'comment' json element with 'text' node, for example: {\"comment\": { \"text\": \"my comment\"}}. \n\n If comment type is not specified the default value 'OTHER' will be saved. If 'alarmId' or 'userId' specified in body it will be ignored.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"saveAlarmComment","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"A JSON value representing the comment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmComment"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmComment"}}}}}}},"/api/alarm/{alarmId}/clear":{"post":{"tags":["alarm-controller"],"summary":"Clear Alarm (clearAlarm)","description":"Clear the Alarm. Once cleared, the 'clear_ts' field will be set to current timestamp and special rule chain event 'ALARM_CLEAR' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"clearAlarm","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmInfo"}}}}}}},"/api/alarm/{alarmId}/assign/{assigneeId}":{"post":{"tags":["alarm-controller"],"summary":"Assign/Reassign Alarm (assignAlarm)","description":"Assign the Alarm. Once assigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_ASSIGNED' (or ALARM_REASSIGNED in case of assigning already assigned alarm) will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"assignAlarm","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"assigneeId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alarm"}}}}}}},"/api/alarm/{alarmId}/ack":{"post":{"tags":["alarm-controller"],"summary":"Acknowledge Alarm (ackAlarm)","description":"Acknowledge the Alarm. Once acknowledged, the 'ack_ts' field will be set to current timestamp and special rule chain event 'ALARM_ACK' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"ackAlarm","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmInfo"}}}}}}},"/api/ai/model":{"get":{"tags":["ai-model-controller"],"summary":"Get AI models (getAiModels)","description":"Returns a page of AI models. 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":"getAiModels","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 AI model name, provider and model ID.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","provider","modelId"]}},{"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/PageDataAiModel"}}}}}},"post":{"tags":["ai-model-controller"],"summary":"Create or update AI model (saveAiModel)","description":"Creates or updates an AI model record.\n\n• **Create:** Omit the `id` to create a new record. The platform assigns a UUID to the new record and returns it in the `id` field of the response.\n\n• **Update:** Include an existing `id` to modify that record. If no matching record exists, the API responds with **404 Not Found**.\n\nTenant ID for the AI model will be taken from the authenticated user making the request, regardless of any value provided in the request body.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveAiModel","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiModel"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiModel"}}}}}}},"/api/ai/model/chat":{"post":{"tags":["ai-model-controller"],"summary":"Send request to AI chat model (sendChatRequest)","description":"Submits a single prompt - made up of an optional system message and a required user message - to the specified AI chat model and returns either the generated answer or an error envelope.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"sendChatRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbChatRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Failure"},{"$ref":"#/components/schemas/Success"}]}}}}}}},"/api/admin/settings":{"post":{"tags":["admin-controller"],"summary":"Creates or Updates the Administration Settings (saveAdminSettings)","description":"Creates or Updates the Administration Settings. Platform generates random Administration Settings Id during settings creation. The Administration Settings Id will be present in the response. Specify the Administration Settings Id when you would like to update the Administration Settings. Referencing non-existing Administration Settings Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveAdminSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettings"}}}}}}},"/api/admin/settings/testSms":{"post":{"tags":["admin-controller"],"summary":"Send test sms (sendTestSms)","description":"Attempts to send test sms to the System Administrator User using SMS Settings and phone number provided as a parameters of the request. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"sendTestSms","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestSmsRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/admin/settings/testMail":{"post":{"tags":["admin-controller"],"summary":"Send test email (sendTestMail)","description":"Attempts to send test email to the System Administrator User using Mail Settings provided as a parameter. You may change the 'To' email in the user profile of the System Administrator. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"sendTestMail","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettings"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/admin/securitySettings":{"get":{"tags":["admin-controller"],"summary":"Get the Security Settings object (getSecuritySettings)","description":"Get the Security Settings object that contains password policy, etc.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getSecuritySettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySettings"}}}}}},"post":{"tags":["admin-controller"],"summary":"Update Security Settings (saveSecuritySettings)","description":"Updates the Security Settings object that contains password policy, etc.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveSecuritySettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySettings"}}}}}}},"/api/admin/repositorySettings":{"get":{"tags":["admin-controller"],"summary":"Get repository settings (getRepositorySettings)","description":"Get the repository settings object. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getRepositorySettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositorySettings"}}}}}},"post":{"tags":["admin-controller"],"summary":"Creates or Updates the repository settings (saveRepositorySettings)","description":"Creates or Updates the repository settings object. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveRepositorySettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositorySettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositorySettings"}}}}}},"delete":{"tags":["admin-controller"],"summary":"Delete repository settings (deleteRepositorySettings)","description":"Deletes the repository settings.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteRepositorySettings","responses":{"200":{"description":"OK"}}}},"/api/admin/repositorySettings/checkAccess":{"post":{"tags":["admin-controller"],"summary":"Check repository access (checkRepositoryAccess)","description":"Attempts to check repository access. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"checkRepositoryAccess","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositorySettings"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/admin/jwtSettings":{"get":{"tags":["admin-controller"],"summary":"Get the JWT Settings object (getJwtSettings)","description":"Get the JWT Settings object that contains JWT token policy, etc. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getJwtSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtSettings"}}}}}},"post":{"tags":["admin-controller"],"summary":"Update JWT Settings (saveJwtSettings)","description":"Updates the JWT Settings object that contains JWT token policy, etc. The tokenSigningKey field is a Base64 encoded string.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"saveJwtSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/admin/autoCommitSettings":{"get":{"tags":["admin-controller"],"summary":"Get auto commit settings (getAutoCommitSettings)","description":"Get the auto commit settings object. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getAutoCommitSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoCommitSettings"}}}}}},"post":{"tags":["admin-controller"],"summary":"Creates or Updates the auto commit settings (saveAutoCommitSettings)","description":"Creates or Updates the auto commit settings object. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"saveAutoCommitSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoCommitSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoCommitSettings"}}}}}},"delete":{"tags":["admin-controller"],"summary":"Delete auto commit settings (deleteAutoCommitSettings)","description":"Deletes the auto commit settings.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteAutoCommitSettings","responses":{"200":{"description":"OK"}}}},"/api/2fa/settings":{"get":{"tags":["two-factor-auth-config-controller"],"summary":"Get platform 2FA settings (getPlatformTwoFaSettings)","description":"Get platform settings for 2FA. The settings are described for savePlatformTwoFaSettings API method. If 2FA is not configured, then an empty response will be returned.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getPlatformTwoFaSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformTwoFaSettings"}}}}}},"post":{"tags":["two-factor-auth-config-controller"],"summary":"Save platform 2FA settings (savePlatformTwoFaSettings)","description":"Save 2FA settings for platform. The settings have following properties:\n- `providers` - the list of 2FA providers' configs. Users will only be allowed to use 2FA providers from this list. \n\n- `minVerificationCodeSendPeriod` - minimal period in seconds to wait after verification code send request to send next request. \n- `verificationCodeCheckRateLimit` - rate limit configuration for verification code checking.\nThe format is standard: 'amountOfRequests:periodInSeconds'. The value of '1:60' would limit verification code checking requests to one per minute.\n- `maxVerificationFailuresBeforeUserLockout` - maximum number of verification failures before a user gets disabled.\n- `totalAllowedTimeForVerification` - total amount of time in seconds allotted for verification. Basically, this property sets a lifetime for pre-verification token. If not set, default value of 30 minutes is used.\n\n\nTOTP 2FA provider config has following settings:\n- `issuerName` - issuer name that will be displayed in an authenticator app near a username. Must not be blank.\n\nFor SMS 2FA provider:\n- `smsVerificationMessageTemplate` - verification message template.  Available template variables are ${code} and ${userEmail}. It must not be blank and must contain verification code variable.\n- `verificationCodeLifetime` - verification code lifetime in seconds. Required to be positive.\n\nFor EMAIL provider type:\n- `verificationCodeLifetime` - the same as for SMS.\n\nExample of the settings:\n```\n{\n  \"providers\": [\n    {\n      \"providerType\": \"TOTP\",\n      \"issuerName\": \"TB\"\n    },\n    {\n      \"providerType\": \"EMAIL\",\n      \"verificationCodeLifetime\": 60\n    },\n    {\n      \"providerType\": \"SMS\",\n      \"verificationCodeLifetime\": 60,\n      \"smsVerificationMessageTemplate\": \"Here is your verification code: ${code}\"\n    }\n  ],\n  \"minVerificationCodeSendPeriod\": 60,\n  \"verificationCodeCheckRateLimit\": \"3:900\",\n  \"maxVerificationFailuresBeforeUserLockout\": 10,\n  \"totalAllowedTimeForVerification\": 600\n}\n```\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"savePlatformTwoFaSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformTwoFaSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformTwoFaSettings"}}}}}}},"/api/2fa/account/config/submit":{"post":{"tags":["two-factor-auth-config-controller"],"summary":"Submit 2FA account config (submitTwoFaAccountConfig)","description":"Submit 2FA account config to prepare for a future verification. Basically, this method will send a verification code for a given account config, if this has sense for a chosen 2FA provider. This code is needed to then verify and save the account config.\n\nExample of EMAIL 2FA account config:\n```\n{\n  \"providerType\": \"EMAIL\",\n  \"useByDefault\": true,\n  \"email\": \"separate-email-for-2fa@thingsboard.org\"\n}\n```\n\nExample of SMS 2FA account config:\n```\n{\n  \"providerType\": \"SMS\",\n  \"useByDefault\": false,\n  \"phoneNumber\": \"+38012312321\"\n}\n```\n\nFor TOTP this method does nothing.\n\nWill throw an error (Bad Request) if submitted account config is not valid, or if the provider is not configured for usage. \n\nAvailable for any authorized user. ","operationId":"submitTwoFaAccountConfig","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BackupCodeTwoFaAccountConfig"},{"$ref":"#/components/schemas/EmailTwoFaAccountConfig"},{"$ref":"#/components/schemas/SmsTwoFaAccountConfig"},{"$ref":"#/components/schemas/TotpTwoFaAccountConfig"}]}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/2fa/account/config/generate":{"post":{"tags":["two-factor-auth-config-controller"],"summary":"Generate 2FA account config (generateTwoFaAccountConfig)","description":"Generate new 2FA account config template for specified provider type. \n\nFor TOTP, this will return a corresponding account config template with a generated OTP auth URL (with new random secret key for each API call) that can be then converted to a QR code to scan with an authenticator app. Example:\n```\n{\n  \"providerType\": \"TOTP\",\n  \"useByDefault\": false,\n  \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=PNJDNWJVAK4ZTUYT7RFGPQLXA7XGU7PX\"\n}\n```\n\nFor EMAIL, the generated config will contain email from user's account:\n```\n{\n  \"providerType\": \"EMAIL\",\n  \"useByDefault\": false,\n  \"email\": \"tenant@thingsboard.org\"\n}\n```\n\nFor SMS 2FA this method will just return a config with empty/default values as there is nothing to generate/preset:\n```\n{\n  \"providerType\": \"SMS\",\n  \"useByDefault\": false,\n  \"phoneNumber\": null\n}\n```\n\nWill throw an error (Bad Request) if the provider is not configured for usage. \n\nAvailable for any authorized user. ","operationId":"generateTwoFaAccountConfig","parameters":[{"name":"providerType","in":"query","description":"2FA provider type to generate new account config for","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/BackupCodeTwoFaAccountConfig"},{"$ref":"#/components/schemas/EmailTwoFaAccountConfig"},{"$ref":"#/components/schemas/SmsTwoFaAccountConfig"},{"$ref":"#/components/schemas/TotpTwoFaAccountConfig"}]}}}}}}},"/api/{entityType}/{entityId}/calculatedFields":{"get":{"tags":["calculated-field-controller"],"summary":"Get Calculated Fields by Entity Id (getCalculatedFieldsByEntityId)","description":"Fetch the Calculated Fields based on the provided Entity Id.","operationId":"getCalculatedFieldsByEntityId","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity 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":"Calculated field type. If not specified, all types will be returned.","required":false,"schema":{"type":"string","enum":["SIMPLE","SCRIPT","GEOFENCING","ALARM","PROPAGATION","RELATED_ENTITIES_AGGREGATION","ENTITY_AGGREGATION"]}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the calculated field 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"]}},{"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/PageDataCalculatedField"}}}}}}},"/api/widgetsBundles":{"get":{"tags":["widgets-bundle-controller"],"summary":"Get Widget Bundles (getWidgetsBundles)","description":"Returns a page of Widget Bundle objects available for current user. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case.  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 any authorized user. ","operationId":"getWidgetsBundles","parameters":[{"name":"widgetsBundleIds","in":"query","description":"A list of widgets bundle ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the widget bundle title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","tenantId"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"tenantOnly","in":"query","description":"Optional boolean parameter to include only tenant-level bundles without system","required":false,"schema":{"type":"boolean"}},{"name":"fullSearch","in":"query","description":"Optional boolean parameter indicating extended search of widget bundles by description and by name / description of related widget types","required":false,"schema":{"type":"boolean"}},{"name":"scadaFirst","in":"query","description":"Optional boolean parameter indicating whether to fetch widgets bundles with SCADA symbols first. Works only when fullSearch parameter is enabled","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataWidgetsBundle"},{"type":"array","items":{"$ref":"#/components/schemas/WidgetsBundle"}}]}}}}}}},"/api/widgetsBundle/{widgetsBundleId}":{"get":{"tags":["widgets-bundle-controller"],"summary":"Get Widget Bundle (getWidgetsBundleById)","description":"Get the Widget Bundle based on the provided Widget Bundle Id. Widget Bundle represents a group(bundle) of widgets. Widgets are grouped into bundle by type or use case. \n\nAvailable for any authorized user. ","operationId":"getWidgetsBundleById","parameters":[{"name":"widgetsBundleId","in":"path","description":"A string value representing the widget bundle 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/WidgetsBundle"}}}}}},"delete":{"tags":["widgets-bundle-controller"],"summary":"Delete widgets bundle (deleteWidgetsBundle)","description":"Deletes the widget bundle. Referencing non-existing Widget Bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteWidgetsBundle","parameters":[{"name":"widgetsBundleId","in":"path","description":"A string value representing the widget bundle id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/widgetTypes":{"get":{"tags":["widget-type-controller"],"summary":"Get all Widget types for specified Bundle (getBundleWidgetTypesByBundleAlias) (Deprecated)","description":"Returns an array of Widget Type objects that belong to specified Widget Bundle.Widget Type represents the template for widget creation. Widget Type and Widget are similar to class and object in OOP theory. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getBundleWidgetTypes","parameters":[{"name":"widgetsBundleId","in":"query","description":"Widget Bundle Id","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the widget type 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","deprecated","tenantId"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC, DESC"]}},{"name":"tenantOnly","in":"query","description":"Optional boolean parameter indicating whether only tenant widget types should be returned","required":false,"schema":{"type":"boolean"}},{"name":"fullSearch","in":"query","description":"Optional boolean parameter indicating whether search widgets by description not only by name","required":false,"schema":{"type":"boolean"}},{"name":"deprecatedFilter","in":"query","description":"Optional string parameter indicating whether to include deprecated widgets","required":false,"schema":{"type":"string","enum":["ALL","ACTUAL","DEPRECATED"]}},{"name":"widgetTypeList","in":"query","description":"A list of string values separated by comma ',' representing one of the widget type value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["timeseries","latest","control","alarm","static"]}}},{"name":"scadaFirst","in":"query","description":"Optional boolean parameter indicating whether to fetch SCADA symbol widgets first","required":false,"schema":{"type":"boolean"}},{"name":"isSystem","in":"query","description":"System or Tenant","required":true,"schema":{"type":"boolean"}},{"name":"bundleAlias","in":"query","description":"Widget Bundle alias","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataWidgetTypeInfo"},{"type":"array","items":{"$ref":"#/components/schemas/WidgetType"}}]}}}}},"deprecated":true}},"/api/widgetTypesInfos":{"get":{"tags":["widget-type-controller"],"summary":"Get Widget Type Info objects (getBundleWidgetTypesInfosByBundleAlias) (Deprecated)","description":"Get the Widget Type Info objects based on the provided parameters. Widget Type Info is a lightweight object that represents Widget Type but does not contain the heavyweight widget descriptor JSON\n\nAvailable for any authorized user. ","operationId":"getBundleWidgetTypesInfos","parameters":[{"name":"widgetsBundleId","in":"query","description":"Widget Bundle Id","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the widget type 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","deprecated","tenantId"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"fullSearch","in":"query","description":"Optional boolean parameter indicating whether search widgets by description not only by name","required":false,"schema":{"type":"boolean"}},{"name":"deprecatedFilter","in":"query","description":"Optional string parameter indicating whether to include deprecated widgets","required":false,"schema":{"type":"string","enum":["ALL","ACTUAL","DEPRECATED"]}},{"name":"widgetTypeList","in":"query","description":"A list of string values separated by comma ',' representing one of the widget type value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["timeseries","latest","control","alarm","static"]}}},{"name":"isSystem","in":"query","description":"System or Tenant","required":true,"schema":{"type":"boolean"}},{"name":"bundleAlias","in":"query","description":"Widget Bundle alias","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/WidgetTypeInfo"}},{"$ref":"#/components/schemas/PageDataWidgetTypeInfo"}]}}}}},"deprecated":true}},"/api/widgetTypesDetails":{"get":{"tags":["widget-type-controller"],"summary":"Get all Widget types details for specified Bundle (getBundleWidgetTypesDetailsByBundleAlias) (Deprecated)","description":"Returns an array of Widget Type Details objects that belong to specified Widget Bundle.Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering.  \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getBundleWidgetTypesDetails","parameters":[{"name":"widgetsBundleId","in":"query","description":"Widget Bundle Id","required":true,"schema":{"type":"string"}},{"name":"includeResources","in":"query","description":"Export used resources and replace resource links with resource metadata","required":false,"schema":{"type":"boolean"}},{"name":"isSystem","in":"query","description":"System or Tenant","required":true,"schema":{"type":"boolean"}},{"name":"bundleAlias","in":"query","description":"Widget Bundle alias","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WidgetTypeDetails"}}}}}},"deprecated":true}},"/api/widgetTypeInfo/{widgetTypeId}":{"get":{"tags":["widget-type-controller"],"summary":"Get Widget Type Info (getWidgetTypeInfoById)","description":"Get the Widget Type Info based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getWidgetTypeInfoById","parameters":[{"name":"widgetTypeId","in":"path","description":"A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetTypeInfo"}}}}}}},"/api/widgetTypeFqns":{"get":{"tags":["widget-type-controller"],"summary":"Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns)","description":"Returns an array of Widget Type fqns that belong to specified Widget Bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getBundleWidgetTypeFqns","parameters":[{"name":"widgetsBundleId","in":"query","description":"Widget Bundle Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/api/widgetType/{widgetTypeId}":{"get":{"tags":["widget-type-controller"],"summary":"Get Widget Type Details (getWidgetTypeById)","description":"Get the Widget Type Details based on the provided Widget Type Id. Widget Type Details extend Widget Type and add image and description properties. Those properties are useful to edit the Widget Type but they are not required for Dashboard rendering. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getWidgetTypeById","parameters":[{"name":"widgetTypeId","in":"path","description":"A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"includeResources","in":"query","description":"Export used resources and replace resource links with resource metadata","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetTypeDetails"}}}}}},"delete":{"tags":["widget-type-controller"],"summary":"Delete widget type (deleteWidgetType)","description":"Deletes the  Widget Type. Referencing non-existing Widget Type Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteWidgetType","parameters":[{"name":"widgetTypeId","in":"path","description":"A string value representing the widget type id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/v2/alarms":{"get":{"tags":["alarm-controller"],"summary":"Get All Alarms (getAllAlarmsV2)","description":"Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. 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":"getAllAlarmsV2","parameters":[{"name":"statusList","in":"query","description":"A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}}},{"name":"severityList","in":"query","description":"A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]}}},{"name":"typeList","in":"query","description":"A list of string values separated by comma ',' representing alarm types","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"assigneeId","in":"query","description":"A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on of next alarm fields: type, severity or status","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","startTs","endTs","type","ackTs","clearTs","severity","status"]}},{"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":"The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAlarmInfo"}}}}}}},"/api/v2/alarm/{entityType}/{entityId}":{"get":{"tags":["alarm-controller"],"summary":"Get Alarms (getAlarmsV2)","description":"Returns a page of alarms for the selected entity. 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":"getAlarmsV2","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"statusList","in":"query","description":"A list of string values separated by comma ',' representing one of the AlarmSearchStatus enumeration value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}}},{"name":"severityList","in":"query","description":"A list of string values separated by comma ',' representing one of the AlarmSeverity enumeration value","required":false,"schema":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]}}},{"name":"typeList","in":"query","description":"A list of string values separated by comma ',' representing alarm types","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"assigneeId","in":"query","description":"A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on of next alarm fields: type, severity or status","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","startTs","endTs","type","ackTs","clearTs","severity","status"]}},{"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":"The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAlarmInfo"}}}}}}},"/api/users":{"get":{"tags":["user-controller"],"summary":"Get Users (getUsers)","description":"Returns a page of users owned by tenant or customer. The scope depends on authority of the user that performs the request.You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getUsersByIds","parameters":[{"name":"userIds","in":"query","description":"A list of user ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the user email.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","firstName","lastName","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataUser"},{"type":"array","items":{"$ref":"#/components/schemas/User"}}]}}}}}}},"/api/users/info":{"get":{"tags":["user-controller"],"summary":"Find users by query (findUsersByQuery)","description":"Returns page of user data objects. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"findUsersByQuery","parameters":[{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the user email.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","firstName","lastName","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataUserEmailInfo"}}}}}}},"/api/users/assign/{alarmId}":{"get":{"tags":["user-controller"],"summary":"Get usersForAssign (getUsersForAssign)","description":"Returns page of user data objects that can be assigned to provided alarmId. Search is been executed by email, firstName and lastName fields. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getUsersForAssign","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the user email.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","firstName","lastName","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataUserEmailInfo"}}}}}}},"/api/user/{userId}":{"get":{"tags":["user-controller"],"summary":"Get User (getUserById)","description":"Fetch the User object based on the provided User Id. If the user has the authority of 'SYS_ADMIN', the server does not perform additional checks. If the user has the authority of 'TENANT_ADMIN', the server checks that the requested user is owned by the same tenant. If the user has the authority of 'CUSTOMER_USER', the server checks that the requested user is owned by the same customer.","operationId":"getUserById","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}}},"delete":{"tags":["user-controller"],"summary":"Delete User (deleteUser)","description":"Deletes the User, it's credentials and all the relations (from and to the User). Referencing non-existing User Id will cause an error. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteUser","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/{userId}/token":{"get":{"tags":["user-controller"],"summary":"Get User Token (getUserToken)","description":"Returns the token of the User based on the provided User Id. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to get the token of any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to get the token of any customer user that belongs to the same tenant. ","operationId":"getUserToken","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/user/{userId}/activationLink":{"get":{"tags":["user-controller"],"summary":"Get activation link (getActivationLink)","description":"Get the activation link for the user. The base url for activation link is configurable in the general settings of system administrator. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getActivationLink","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/user/{userId}/activationLinkInfo":{"get":{"tags":["user-controller"],"summary":"Get activation link info (getActivationLinkInfo)","description":"Get the activation link info for the user. The base url for activation link is configurable in the general settings of system administrator. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getActivationLinkInfo","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActivationLink"}}}}}}},"/api/user/tokenAccessEnabled":{"get":{"tags":["user-controller"],"summary":"Check Token Access Enabled (isUserTokenAccessEnabled)","description":"Checks that the system is configured to allow administrators to impersonate themself as other users. If the user who performs the request has the authority of 'SYS_ADMIN', it is possible to login as any tenant administrator. If the user who performs the request has the authority of 'TENANT_ADMIN', it is possible to login as any customer user. ","operationId":"isUserTokenAccessEnabled","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/user/dashboards":{"get":{"tags":["user-controller"],"summary":"Get information about last visited and starred dashboards (getLastVisitedDashboards)","description":"Fetch the list of last visited and starred dashboards. Both lists are limited to 10 items.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getUserDashboardsInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDashboardsInfo"}}}}}}},"/api/user/dashboards/{dashboardId}/{action}":{"get":{"tags":["user-controller"],"summary":"Report action of User over the dashboard (reportUserDashboardAction)","description":"Report action of User over the dashboard. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"reportUserDashboardAction","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"action","in":"path","description":"Dashboard action, one of: \"visit\", \"star\" or \"unstar\".","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDashboardsInfo"}}}}}}},"/api/usage":{"get":{"tags":["usage-info-controller"],"operationId":"getTenantUsageInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageInfo"}}}}}}},"/api/uiSettings/helpBaseUrl":{"get":{"tags":["ui-settings-controller"],"summary":"Get UI help base url (getHelpBaseUrl)","description":"Get UI help base url used to fetch help assets. The actual value of the base url is configurable in the system configuration file.","operationId":"getHelpBaseUrl","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/tenants":{"get":{"tags":["tenant-controller"],"summary":"Get Tenants (getTenants)","description":"Returns a page of tenants registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantsByIds","parameters":[{"name":"tenantIds","in":"query","description":"A list of tenant ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the tenant name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","email","country","state","city","address","address2","zip","phone","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataTenant"},{"type":"array","items":{"$ref":"#/components/schemas/Tenant"}}]}}}}}}},"/api/tenantProfiles":{"get":{"tags":["tenant-profile-controller"],"summary":"Get Tenant Profiles (getTenantProfiles)","description":"Returns a page of tenant profiles registered in the platform. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantProfiles","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 tenant 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","description","isDefault"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"ids","in":"query","description":"Comma-separated list of tenant profile ids","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/TenantProfile"}},{"$ref":"#/components/schemas/PageDataTenantProfile"}]}}}}}}},"/api/tenantProfileInfos":{"get":{"tags":["tenant-profile-controller"],"summary":"Get Tenant Profiles Info (getTenantProfileInfos)","description":"Returns a page of tenant profile info objects registered in the platform. Tenant Profile Info is a lightweight object that contains only id and name of the profile. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantProfileInfos","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 tenant profile name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["id","name"]}},{"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/PageDataEntityInfo"}}}}}}},"/api/tenantProfileInfo/{tenantProfileId}":{"get":{"tags":["tenant-profile-controller"],"summary":"Get Tenant Profile Info (getTenantProfileInfoById)","description":"Fetch the Tenant Profile Info object based on the provided Tenant Profile Id. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantProfileInfoById","parameters":[{"name":"tenantProfileId","in":"path","description":"A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityInfo"}}}}}}},"/api/tenantProfileInfo/default":{"get":{"tags":["tenant-profile-controller"],"summary":"Get default Tenant Profile Info (getDefaultTenantProfileInfo)","description":"Fetch the default Tenant Profile Info object based. Tenant Profile Info is a lightweight object that contains only id and name of the profile. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getDefaultTenantProfileInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityInfo"}}}}}}},"/api/tenantProfile/{tenantProfileId}":{"get":{"tags":["tenant-profile-controller"],"summary":"Get Tenant Profile (getTenantProfileById)","description":"Fetch the Tenant Profile object based on the provided Tenant Profile Id. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantProfileById","parameters":[{"name":"tenantProfileId","in":"path","description":"A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantProfile"}}}}}},"delete":{"tags":["tenant-profile-controller"],"summary":"Delete Tenant Profile (deleteTenantProfile)","description":"Deletes the tenant profile. Referencing non-existing tenant profile Id will cause an error. Referencing profile that is used by the tenants will cause an error. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"deleteTenantProfile","parameters":[{"name":"tenantProfileId","in":"path","description":"A string value representing the tenant profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/tenantInfos":{"get":{"tags":["tenant-controller"],"summary":"Get Tenants Info (getTenants)","description":"Returns a page of tenant info objects registered in the platform. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantInfos","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 tenant name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","tenantProfileName","title","email","country","state","city","address","address2","zip","phone","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataTenantInfo"}}}}}}},"/api/tenant/{tenantId}":{"get":{"tags":["tenant-controller"],"summary":"Get Tenant (getTenantById)","description":"Fetch the Tenant object based on the provided Tenant Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getTenantById","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"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}}}},"delete":{"tags":["tenant-controller"],"summary":"Delete Tenant (deleteTenant)","description":"Deletes the tenant, it's customers, rule chains, devices and all other related entities. Referencing non-existing tenant Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteTenant","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"}}],"responses":{"200":{"description":"OK"}}}},"/api/tenant/{tenantId}/users":{"get":{"tags":["user-controller"],"summary":"Get Tenant Users (getTenantAdmins)","description":"Returns a page of users owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantAdmins","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":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the user email.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","firstName","lastName","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataUser"}}}}}}},"/api/tenant/{tenantId}/dashboards":{"get":{"tags":["dashboard-controller"],"summary":"Get Tenant Dashboards by System Administrator (getTenantDashboards)","description":"Returns a page of dashboard info objects owned by tenant. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantDashboards","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":"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 dashboard title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title"]}},{"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/PageDataDashboardInfo"}}}}}}},"/api/tenant/info/{tenantId}":{"get":{"tags":["tenant-controller"],"summary":"Get Tenant Info (getTenantInfoById)","description":"Fetch the Tenant Info object based on the provided Tenant Id. The Tenant Info object extends regular Tenant object and includes Tenant Profile name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getTenantInfoById","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"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantInfo"}}}}}}},"/api/tenant/entityViews":{"get":{"tags":["entity-view-controller"],"summary":"Get Entity View by name (getTenantEntityView)","description":"Fetch the Entity View object based on the tenant id and entity view name. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantEntityViews","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":"\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity view 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"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"entityViewName","in":"query","description":"Entity View name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/EntityView"},{"$ref":"#/components/schemas/PageDataEntityView"}]}}}}}}},"/api/tenant/entityViewInfos":{"get":{"tags":["entity-view-controller"],"summary":"Get Tenant Entity Views (getTenantEntityViews)","description":"Returns a page of entity views info owned by tenant. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. 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":"getTenantEntityViewInfos","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":"\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity view 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","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/PageDataEntityViewInfo"}}}}}}},"/api/tenant/edges":{"get":{"tags":["edge-controller"],"summary":"Get Tenant Edge (getTenantEdge)","description":"Requested edge must be owned by tenant or customer that the user belongs to. Edge name is an unique property of edge. So it can be used to identify the edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantEdges","parameters":[{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","description":"A string value representing the edge type. For example, 'default'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"edgeName","in":"query","description":"Unique name of the edge","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Edge"},{"$ref":"#/components/schemas/PageDataEdge"}]}}}}}}},"/api/tenant/edgeInfos":{"get":{"tags":["edge-controller"],"summary":"Get Tenant Edge Infos (getTenantEdgeInfos)","description":"Returns a page of edges info objects owned by tenant. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Edge Info is an extension of the default Edge object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantEdgeInfos","parameters":[{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","description":"A string value representing the edge type. For example, 'default'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEdgeInfo"}}}}}}},"/api/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.\n\nAvailable 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/tenant/dashboards":{"get":{"tags":["dashboard-controller"],"summary":"Get Tenant Dashboards (getTenantDashboards)","description":"Returns a page of dashboard info objects owned by the tenant of a current user. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. 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":"getTenantDashboards_1","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":"mobile","in":"query","description":"Exclude dashboards that are hidden for mobile","required":false,"schema":{"type":"boolean"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the dashboard title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title"]}},{"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/PageDataDashboardInfo"}}}}}}},"/api/tenant/customers":{"get":{"tags":["customer-controller"],"summary":"Get Tenant Customer by Customer title (getTenantCustomer)","description":"Get the Customer using Customer Title. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantCustomer","parameters":[{"name":"customerTitle","in":"query","description":"A string value representing the Customer title.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}}}}},"/api/tenant/assets":{"get":{"tags":["asset-controller"],"summary":"Get Tenant Asset (getTenantAsset)","description":"Requested asset must be owned by tenant that the user belongs to. Asset name is an unique property of asset. So it can be used to identify the asset.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantAssets","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":"Asset type","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the asset name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"assetName","in":"query","description":"A string value representing the Asset name.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Asset"},{"$ref":"#/components/schemas/PageDataAsset"}]}}}}}}},"/api/tenant/assetInfos":{"get":{"tags":["asset-controller"],"summary":"Get Tenant Asset Infos (getTenantAssetInfos)","description":"Returns a page of assets 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. Asset Info is an extension of the default Asset object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantAssetInfos","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":"Asset type","required":false,"schema":{"type":"string"}},{"name":"assetProfileId","in":"query","description":"A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the asset name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAssetInfo"}}}}}}},"/api/signup/privacyPolicyAccepted":{"get":{"tags":["sign-up-controller"],"operationId":"privacyPolicyAccepted","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/ruleNode/{ruleNodeId}/debugIn":{"get":{"tags":["rule-chain-controller"],"summary":"Get latest input message (getLatestRuleNodeDebugInput)","description":"Gets the input message from the debug events for specified Rule Chain Id. Referencing non-existing rule chain Id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getLatestRuleNodeDebugInput","parameters":[{"name":"ruleNodeId","in":"path","description":"A string value representing the rule node id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/ruleChains":{"get":{"tags":["rule-chain-controller"],"summary":"Get Rule Chains (getRuleChains)","description":"Returns a page of Rule Chains owned by tenant. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.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":"getRuleChainsByIds","parameters":[{"name":"ruleChainIds","in":"query","description":"A list of rule chain ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","description":"Rule chain type (CORE or EDGE)","required":false,"schema":{"type":"string","enum":["CORE","EDGE"]}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the rule chain 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","root"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataRuleChain"},{"type":"array","items":{"$ref":"#/components/schemas/RuleChain"}}]}}}}}}},"/api/ruleChains/export":{"get":{"tags":["rule-chain-controller"],"summary":"Export Rule Chains","description":"Exports all tenant rule chains as one JSON.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"exportRuleChains","parameters":[{"name":"limit","in":"query","description":"A limit of rule chains to export.","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChainData"}}}}}}},"/api/ruleChain/{ruleChainId}":{"get":{"tags":["rule-chain-controller"],"summary":"Get Rule Chain (getRuleChainById)","description":"Fetch the Rule Chain object based on the provided Rule Chain Id. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getRuleChainById","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChain"}}}}}},"delete":{"tags":["rule-chain-controller"],"summary":"Delete rule chain (deleteRuleChain)","description":"Deletes the rule chain. Referencing non-existing rule chain Id will cause an error. Referencing rule chain that is used in the device profiles will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteRuleChain","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/ruleChain/{ruleChainId}/output/labels":{"get":{"tags":["rule-chain-controller"],"summary":"Get Rule Chain output labels (getRuleChainOutputLabels)","description":"Fetch the unique labels for the \"output\" Rule Nodes that belong to the Rule Chain based on the provided Rule Chain Id. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getRuleChainOutputLabels","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"uniqueItems":true}}}}}}},"/api/ruleChain/{ruleChainId}/output/labels/usage":{"get":{"tags":["rule-chain-controller"],"summary":"Get output labels usage (getRuleChainOutputLabelsUsage)","description":"Fetch the list of rule chains and the relation types (labels) they use to process output of the current rule chain based on the provided Rule Chain Id. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getRuleChainOutputLabelsUsage","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RuleChainOutputLabelsUsage"}}}}}}}},"/api/ruleChain/{ruleChainId}/metadata":{"get":{"tags":["rule-chain-controller"],"summary":"Get Rule Chain (getRuleChainById)","description":"Fetch the Rule Chain Metadata object based on the provided Rule Chain Id. The metadata object contains information about the rule nodes and their connections.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getRuleChainMetaData","parameters":[{"name":"ruleChainId","in":"path","description":"A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleChainMetaData"}}}}}}},"/api/ruleChain/tbelEnabled":{"get":{"tags":["rule-chain-controller"],"summary":"Is TBEL script executor enabled","description":"Returns 'True' if the TBEL script execution is enabled\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"isTbelEnabled","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/ruleChain/autoAssignToEdgeRuleChains":{"get":{"tags":["rule-chain-controller"],"summary":"Get Auto Assign To Edge Rule Chains (getAutoAssignToEdgeRuleChains)","description":"Returns a list of Rule Chains that will be assigned to a newly created edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getAutoAssignToEdgeRuleChains","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RuleChain"}}}}}}}},"/api/rpc/persistent/{rpcId}":{"get":{"tags":["rpc-v-2-controller"],"summary":"Get persistent RPC request","description":"Get information about the status of the RPC call.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getPersistedRpc","parameters":[{"name":"rpcId","in":"path","description":"A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rpc"}}}}}},"delete":{"tags":["rpc-v-2-controller"],"summary":"Delete persistent RPC","description":"Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteRpc","parameters":[{"name":"rpcId","in":"path","description":"A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/rpc/persistent/device/{deviceId}":{"get":{"tags":["rpc-v-2-controller"],"summary":"Get persistent RPC requests","description":"Allows to query RPC calls for specific device using pagination.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getPersistedRpcByDevice","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"}},{"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":"rpcStatus","in":"query","description":"Status of the RPC","required":false,"schema":{"type":"string","enum":["QUEUED","SENT","DELIVERED","SUCCESSFUL","TIMEOUT","EXPIRED","FAILED"]}},{"name":"textSearch","in":"query","description":"Not implemented. Leave empty.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","expirationTime","request","response"]}},{"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":{"type":"string"}}}}}}},"/api/resource/{resourceType}/{scope}/{key}":{"get":{"tags":["tb-resource-controller"],"summary":"Download resource (downloadResource)","description":"Download resource with a given type and key for the given scope\n\nAvailable for any authorized user. ","operationId":"downloadResourceIfChanged","parameters":[{"name":"resourceType","in":"path","description":"Type of the resource","required":true,"schema":{"type":"string","enum":["lwm2m_model","jks","pkcs_12","js_module","dashboard"]}},{"name":"scope","in":"path","description":"Scope of the resource","required":true,"schema":{"type":"string","enum":["system","tenant"]}},{"name":"key","in":"path","description":"Key of the resource, e.g. 'extension.js'","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/resource/{resourceType}/{scope}/{key}/info":{"get":{"tags":["tb-resource-controller"],"summary":"Get resource info (getResourceInfo)","description":"Get info for the resource with the given type, scope and key. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getResourceInfo","parameters":[{"name":"resourceType","in":"path","description":"Type of the resource","required":true,"schema":{"type":"string","enum":["lwm2m_model","jks","pkcs_12","js_module","dashboard"]}},{"name":"scope","in":"path","description":"Scope of the resource","required":true,"schema":{"type":"string","enum":["system","tenant"]}},{"name":"key","in":"path","description":"Key of the resource, e.g. 'extension.js'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/resource/{resourceId}":{"get":{"tags":["tb-resource-controller"],"summary":"Get Resource (getResourceById)","description":"Fetch the Resource object based on the provided Resource Id. Resource is a heavyweight object that includes main information about the Resource and also data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getResourceById","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResource"}}}}},"deprecated":true},"delete":{"tags":["tb-resource-controller"],"summary":"Delete Resource (deleteResource)","description":"Deletes the Resource. Referencing non-existing Resource Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteResource","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceDeleteResult"}}}}}}},"/api/resource/{resourceId}/download":{"get":{"tags":["tb-resource-controller"],"summary":"Download Resource (downloadResource)","description":"Download Resource based on the provided Resource Id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"downloadResource","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource 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/resource/tenant":{"get":{"tags":["tb-resource-controller"],"summary":"Get All Resource Infos (getAllResources)","description":"Returns a page of Resource 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. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getTenantResources","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 resource title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","resourceType","tenantId"]}},{"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/PageDataTbResourceInfo"}}}}}}},"/api/resource/pkcs12/{resourceId}/download":{"get":{"tags":["tb-resource-controller"],"summary":"Download PKCS_12 Resource (downloadPkcs12ResourceIfChanged)","description":"Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"downloadPkcs12ResourceIfChanged","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/x-pkcs12":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/resource/lwm2m":{"get":{"tags":["tb-resource-controller"],"summary":"Get LwM2M Objects (getLwm2mListObjects)","description":"Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. You can specify parameters to filter the results. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getLwm2mListObjects","parameters":[{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":true,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":true,"schema":{"type":"string","enum":["id","name"]}},{"name":"objectIds","in":"query","description":"LwM2M Object ids.","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LwM2mObject"}}}}}}}},"/api/resource/lwm2m/{resourceId}/download":{"get":{"tags":["tb-resource-controller"],"summary":"Download LWM2M Resource (downloadLwm2mResourceIfChanged)","description":"Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"downloadLwm2mResourceIfChanged","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/xml":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/resource/lwm2m/page":{"get":{"tags":["tb-resource-controller"],"summary":"Get LwM2M Objects (getLwm2mListObjectsPage)","description":"Returns a page of LwM2M objects parsed from Resources with type 'LWM2M_MODEL' owned by tenant or sysadmin. 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. LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getLwm2mListObjectsPage","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 resource title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["id","name"]}},{"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":{"type":"array","items":{"$ref":"#/components/schemas/LwM2mObject"}}}}}}}},"/api/resource/js/{resourceId}/download":{"get":{"tags":["tb-resource-controller"],"summary":"Download JS Resource (downloadJsResourceIfChanged)","description":"Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for any authorized user. ","operationId":"downloadJsResourceIfChanged","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/javascript":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/resource/jks/{resourceId}/download":{"get":{"tags":["tb-resource-controller"],"summary":"Download JKS Resource (downloadJksResourceIfChanged)","description":"Download Resource based on the provided Resource Id or return 304 status code if resource was not changed.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"downloadJksResourceIfChanged","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/x-java-keystore":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/resource/info/{resourceId}":{"get":{"tags":["tb-resource-controller"],"summary":"Get Resource Info (getResourceInfoById)","description":"Fetch the Resource Info object based on the provided Resource Id. Resource Info is a lightweight object that includes main information about the Resource excluding the heavyweight data. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getResourceInfoById","parameters":[{"name":"resourceId","in":"path","description":"A string value representing the resource id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/api/queues/{queueId}":{"get":{"tags":["queue-controller"],"summary":"Get Queue (getQueueById)","description":"Fetch the Queue object based on the provided Queue Id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getQueueById","parameters":[{"name":"queueId","in":"path","description":"A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queue"}}}}}},"delete":{"tags":["queue-controller"],"summary":"Delete Queue (deleteQueue)","description":"Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"deleteQueue","parameters":[{"name":"queueId","in":"path","description":"A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/queues/name/{queueName}":{"get":{"tags":["queue-controller"],"summary":"Get Queue (getQueueByName)","description":"Fetch the Queue object based on the provided Queue name. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getQueueByName","parameters":[{"name":"queueName","in":"path","description":"A string value representing the queue id. For example, 'Main'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Queue"}}}}}}},"/api/queueStats":{"get":{"tags":["queue-stats-controller"],"summary":"Get Queue Stats entities (getTenantQueueStats)","description":"Returns a page of queue stats objects that are designed to collect queue statistics for every service. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getQueueStatsByIds","parameters":[{"name":"queueStatsIds","in":"query","description":"A list of queue stats ids, separated by comma ','","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the queue name or service id.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PageDataQueueStats"},{"type":"array","items":{"$ref":"#/components/schemas/QueueStats"}}]}}}}}}},"/api/queueStats/{queueStatsId}":{"get":{"tags":["queue-stats-controller"],"summary":"Get Queue stats entity by id (getQueueStatsById)","description":"Fetch the Queue stats object based on the provided Queue stats id. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getQueueStatsById","parameters":[{"name":"queueStatsId","in":"path","description":"A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueStats"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/values/timeseries":{"get":{"tags":["telemetry-controller"],"summary":"Get time series data (getTimeseries)","description":"Returns a range of time series values for specified entity. Returns not aggregated data by default. Use aggregation function ('agg') and aggregation interval ('interval') to enable aggregation of the results on the database / server side. The aggregation is generally more efficient then fetching all records. \n\n```json\n{\n  \"temperature\": [\n    {\n      \"value\": 36.7,\n      \"ts\": 1609459200000\n    },\n    {\n      \"value\": 36.6,\n      \"ts\": 1609459201000\n    }\n  ]\n}\n```\n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getLatestTimeseries","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"useStrictDataTypes","in":"query","description":"Enables/disables conversion of telemetry values to strings. Conversion is enabled by default. Set parameter to 'true' in order to disable the conversion.","required":false,"schema":{"type":"boolean","default":false}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}},{"name":"startTs","in":"query","description":"A long value representing the start timestamp of the time range in milliseconds, UTC.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"endTs","in":"query","description":"A long value representing the end timestamp of the time range in milliseconds, UTC.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"intervalType","in":"query","description":"A string value representing the type fo the interval.","required":false,"schema":{"type":"string","enum":["MILLISECONDS","WEEK","WEEK_ISO","MONTH","QUARTER"]}},{"name":"interval","in":"query","description":"A long value representing the aggregation interval range in milliseconds.","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"name":"timeZone","in":"query","description":"A string value representing the timezone that will be used to calculate exact timestamps for 'WEEK', 'WEEK_ISO', 'MONTH' and 'QUARTER' interval types.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"An integer value that represents a max number of time series data points to fetch. This parameter is used only in the case if 'agg' parameter is set to 'NONE'.","required":false,"schema":{"type":"string"}},{"name":"agg","in":"query","description":"A string value representing the aggregation function. If the interval is not specified, 'agg' parameter will use 'NONE' value.","required":false,"schema":{"type":"string","enum":["MIN","MAX","AVG","SUM","COUNT","NONE"]}},{"name":"orderBy","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":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/values/attributes":{"get":{"tags":["telemetry-controller"],"summary":"Get attributes (getAttributes)","description":"Returns all attributes that belong to specified entity. Use optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n  {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n  {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n  {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n  {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n  {\"key\": \"jsonKeyExample\",\n    \"value\": {\n      \"someNumber\": 42,\n      \"someArray\": [1,2,3],\n      \"someNestedObject\": {\"key\": \"value\"}\n    },\n    \"lastUpdateTs\": 1609459200004\n  }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAttributes","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}":{"get":{"tags":["telemetry-controller"],"summary":"Get attributes by scope (getAttributesByScope)","description":"Returns all attributes of a specified scope that belong to specified entity. List of possible attribute scopes depends on the entity type: \n\n * SERVER_SCOPE - supported for all entity types;\n * SHARED_SCOPE - supported for devices;\n * CLIENT_SCOPE - supported for devices. \n\nUse optional 'keys' parameter to return specific attributes.\n Example of the result: \n\n```json\n[\n  {\"key\": \"stringAttributeKey\", \"value\": \"value\", \"lastUpdateTs\": 1609459200000},\n  {\"key\": \"booleanAttributeKey\", \"value\": false, \"lastUpdateTs\": 1609459200001},\n  {\"key\": \"doubleAttributeKey\", \"value\": 42.2, \"lastUpdateTs\": 1609459200002},\n  {\"key\": \"longKeyExample\", \"value\": 73, \"lastUpdateTs\": 1609459200003},\n  {\"key\": \"jsonKeyExample\",\n    \"value\": {\n      \"someNumber\": 42,\n      \"someArray\": [1,2,3],\n      \"someNestedObject\": {\"key\": \"value\"}\n    },\n    \"lastUpdateTs\": 1609459200004\n  }\n]\n```\n\n Referencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAttributesByScope","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE","CLIENT_SCOPE"]}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of attributes keys. For example, 'active,inactivityAlarmTime'. If attribute keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/keys/timeseries":{"get":{"tags":["telemetry-controller"],"summary":"Get time series keys (getTimeseriesKeys)","description":"Returns a set of unique time series key names for the selected entity. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getTimeseriesKeys","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes":{"get":{"tags":["telemetry-controller"],"summary":"Get all attribute keys (getAttributeKeys)","description":"Returns a set of unique attribute key names for the selected entity. The response will include merged key names set for all attribute scopes:\n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAttributeKeys","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes/{scope}":{"get":{"tags":["telemetry-controller"],"summary":"Get all attribute keys by scope (getAttributeKeysByScope)","description":"Returns a set of unique attribute key names for the selected entity and attributes scope: \n\n * SERVER_SCOPE - supported for all entity types;\n * CLIENT_SCOPE - supported for devices;\n * SHARED_SCOPE - supported for devices. \n\nReferencing a non-existing entity Id or invalid entity type will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAttributeKeysByScope","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"A string value representing the attributes scope. For example, 'SERVER_SCOPE'.","required":true,"schema":{"type":"string","enum":["SERVER_SCOPE","SHARED_SCOPE","CLIENT_SCOPE"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/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.\n\nAvailable 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/oauth2/loginProcessingUrl":{"get":{"tags":["o-auth-2-controller"],"summary":"Get OAuth2 log in processing URL (getLoginProcessingUrl)","description":"Returns the URL enclosed in double quotes. After successful authentication with OAuth2 provider, it makes a redirect to this path so that the platform can do further log in processing. This URL may be configured as 'security.oauth2.loginProcessingUrl' property in yml configuration file, or as 'SECURITY_OAUTH2_LOGIN_PROCESSING_URL' env variable. By default it is '/login/oauth2/code/'\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getLoginProcessingUrl","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/oauth2/client/{id}":{"get":{"tags":["o-auth-2-controller"],"summary":"Get OAuth2 Client by id (getOAuth2ClientById)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getOAuth2ClientById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuth2Client"}}}}}},"delete":{"tags":["o-auth-2-controller"],"summary":"Delete oauth2 client (deleteOauth2Client)","description":"Deletes the oauth2 client. Referencing non-existing oauth2 client Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteOauth2Client","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/oauth2/client/infos":{"get":{"tags":["o-auth-2-controller"],"summary":"Get OAuth2 Client infos By Ids (findTenantOAuth2ClientInfosByIds)","description":"Fetch OAuth2 Client info objects based on the provided ids. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"findTenantOAuth2ClientInfos","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":"Case-insensitive 'substring' filter based on client's title","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}},{"name":"clientIds","in":"query","description":"A list of oauth2 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/OAuth2ClientInfo"}},{"$ref":"#/components/schemas/PageDataOAuth2ClientInfo"}]}}}}}}},"/api/notifications":{"get":{"tags":["notification-controller"],"summary":"Get notifications (getNotifications)","description":"Returns the page of notifications for current user.\n\nYou 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 any authorized user. \n\n**WebSocket API**:\n\nThere are 2 types of subscriptions: one for unread notifications count, another for unread notifications themselves.\n\nThe URI for opening WS session for notifications: `/api/ws/plugins/notifications`.\n\nSubscription command for unread notifications count:\n```\n{\n  \"unreadCountSubCmd\": {\n    \"cmdId\": 1234\n  }\n}\n```\nTo subscribe for latest unread notifications:\n```\n{\n  \"unreadSubCmd\": {\n    \"cmdId\": 1234,\n    \"limit\": 10\n  }\n}\n```\nTo unsubscribe from any subscription:\n```\n{\n  \"unsubCmd\": {\n    \"cmdId\": 1234\n  }\n}\n```\nTo mark certain notifications as read, use following command:\n```\n{\n  \"markAsReadCmd\": {\n    \"cmdId\": 1234,\n    \"notifications\": [\n      \"6f860330-7fc2-11ed-b855-7dd3b7d2faa9\",\n      \"5b6dfee0-8d0d-11ed-b61f-35a57b03dade\"\n    ]\n  }\n}\n\n```\nTo mark all notifications as read:\n```\n{\n  \"markAllAsReadCmd\": {\n    \"cmdId\": 1234\n  }\n}\n```\n\n\nUpdate structure for unread **notifications count subscription**:\n```\n{\n  \"cmdId\": 1234,\n  \"totalUnreadCount\": 55\n}\n```\nFor **notifications subscription**:\n- full update of latest unread notifications:\n```\n{\n  \"cmdId\": 1234,\n  \"notifications\": [\n    {\n      \"id\": {\n        \"entityType\": \"NOTIFICATION\",\n        \"id\": \"6f860330-7fc2-11ed-b855-7dd3b7d2faa9\"\n      },\n      ...\n    }\n  ],\n  \"totalUnreadCount\": 1\n}\n```\n- when new notification arrives or shown notification is updated:\n```\n{\n  \"cmdId\": 1234,\n  \"update\": {\n    \"id\": {\n      \"entityType\": \"NOTIFICATION\",\n      \"id\": \"6f860330-7fc2-11ed-b855-7dd3b7d2faa9\"\n    },\n    # updated notification info, text, subject etc.\n    ...\n  },\n  \"totalUnreadCount\": 2\n}\n```\n- when unread notifications count changes:\n```\n{\n  \"cmdId\": 1234,\n  \"totalUnreadCount\": 5\n}\n```","operationId":"getNotifications","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":"Case-insensitive 'substring' filter based on notification subject or text","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}},{"name":"unreadOnly","in":"query","description":"To search for unread notifications only","required":false,"schema":{"type":"boolean","default":false}},{"name":"deliveryMethod","in":"query","description":"Delivery method","required":false,"schema":{"type":"string","enum":["WEB","MOBILE_APP"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataNotification"}}}}}}},"/api/notifications/unread/count":{"get":{"tags":["notification-controller"],"summary":"Get unread notifications count (getUnreadNotificationsCount)","description":"Returns unread notifications count for chosen delivery method.\n\nAvailable for any authorized user. ","operationId":"getUnreadNotificationsCount","parameters":[{"name":"deliveryMethod","in":"query","description":"Delivery method","required":false,"schema":{"type":"string","enum":["WEB","MOBILE_APP"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"integer","format":"int32"}}}}}}},"/api/notification/templates":{"get":{"tags":["notification-template-controller"],"summary":"Get notification templates (getNotificationTemplates)","description":"Returns the page of notification templates owned by sysadmin or tenant.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationTemplates","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":"Case-insensitive 'substring' filter based on template's name and notification type","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}},{"name":"notificationTypes","in":"query","description":"Comma-separated list of notification types to filter the templates","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataNotificationTemplate"}}}}}}},"/api/notification/template/{id}":{"get":{"tags":["notification-template-controller"],"summary":"Get notification template by id (getNotificationTemplateById)","description":"Fetches notification template by id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationTemplateById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTemplate"}}}}}},"delete":{"tags":["notification-template-controller"],"summary":"Delete notification template by id (deleteNotificationTemplateById","description":"Deletes notification template by its id.\n\nThis template cannot be referenced by existing scheduled notification requests or any notification rules.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteNotificationTemplateById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/notification/targets":{"get":{"tags":["notification-target-controller"],"summary":"Get notification targets by ids (getNotificationTargetsByIds)","description":"Returns the list of notification targets found by provided ids.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationTargets","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":"Case-insensitive 'substring' filed based on the target's name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}},{"name":"notificationType","in":"query","required":false,"schema":{"type":"string","enum":["GENERAL","ALARM","DEVICE_ACTIVITY","ENTITY_ACTION","ALARM_COMMENT","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","ALARM_ASSIGNMENT","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","ENTITIES_LIMIT_INCREASE_REQUEST","API_USAGE_LIMIT","RULE_NODE","RATE_LIMITS","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]}},{"name":"ids","in":"query","description":"Comma-separated list of uuids representing targets ids","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/NotificationTarget"}},{"$ref":"#/components/schemas/PageDataNotificationTarget"}]}}}}}}},"/api/notification/target/{id}":{"get":{"tags":["notification-target-controller"],"summary":"Get notification target by id (getNotificationTargetById)","description":"Fetches notification target by id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationTargetById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationTarget"}}}}}},"delete":{"tags":["notification-target-controller"],"summary":"Delete notification target by id (deleteNotificationTargetById)","description":"Deletes notification target by its id.\n\nThis target cannot be referenced by existing scheduled notification requests or any notification rules.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteNotificationTargetById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/notification/slack/conversations":{"get":{"tags":["notification-template-controller"],"summary":"List Slack conversations (listSlackConversations)","description":"List available Slack conversations by type.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"listSlackConversations","parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["DIRECT","PUBLIC_CHANNEL","PRIVATE_CHANNEL"]}},{"name":"token","in":"query","description":"Slack bot token. If absent - system Slack settings will be used","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SlackConversation"}}}}}}}},"/api/notification/rules":{"get":{"tags":["notification-rule-controller"],"summary":"Get notification rules (getNotificationRules)","description":"Returns the page of notification rules.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationRules","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":"Case-insensitive 'substring' filter based on rule's name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataNotificationRuleInfo"}}}}}}},"/api/notification/rule/{id}":{"get":{"tags":["notification-rule-controller"],"summary":"Get notification rule by id (getNotificationRuleById)","description":"Fetches notification rule info by rule's id.\nIn addition to regular notification rule fields, there are `templateName` and `deliveryMethods` in the response.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationRuleById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRuleInfo"}}}}}},"delete":{"tags":["notification-rule-controller"],"summary":"Delete notification rule (deleteNotificationRule)","description":"Deletes notification rule by id.\nCancels all related scheduled notification requests (e.g. due to escalation table)\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteNotificationRule","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/notification/requests":{"get":{"tags":["notification-controller"],"summary":"Get notification requests (getNotificationRequests)","description":"Returns the page of notification requests submitted by users of this tenant or sysadmins.\n\nYou can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationRequests","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":"Case-insensitive 'substring' filed based on the used template name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataNotificationRequestInfo"}}}}}}},"/api/notification/request/{id}":{"get":{"tags":["notification-controller"],"summary":"Get notification request by id (getNotificationRequestById)","description":"Fetches notification request info by request id.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getNotificationRequestById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequestInfo"}}}}}},"delete":{"tags":["notification-controller"],"summary":"Delete notification request (deleteNotificationRequest)","description":"Deletes notification request by its id.\n\nIf the request has status `SENT` - all sent notifications for this request will be deleted. If it is `SCHEDULED`, the request will be cancelled.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteNotificationRequest","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/notification/deliveryMethods":{"get":{"tags":["notification-controller"],"summary":"Get available delivery methods (getAvailableDeliveryMethods)","description":"Returns the list of delivery methods that are properly configured and are allowed to be used for sending notifications.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getAvailableDeliveryMethods","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["WEB","EMAIL","SMS","SLACK","MICROSOFT_TEAMS","MOBILE_APP"]}}}}}}}},"/api/noauth/userPasswordPolicy":{"get":{"tags":["auth-controller"],"summary":"Get the current User password policy (getUserPasswordPolicy)","description":"API call to get the password policy for the password validation form(s).","operationId":"getUserPasswordPolicy","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordPolicy"}}}}}}},"/api/noauth/signup/recaptchaPublicKey":{"get":{"tags":["sign-up-controller"],"operationId":"getRecaptchaPublicKey","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/noauth/signup/recaptchaParams":{"get":{"tags":["sign-up-controller"],"operationId":"getRecaptchaParams","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaClientParams"}}}}}}},"/api/noauth/qr":{"get":{"tags":["qr-code-settings-controller"],"operationId":"getApplicationRedirect","parameters":[{"name":"User-Agent","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/noauth/qr/{secret}":{"get":{"tags":["qr-code-settings-controller"],"summary":"Get User Token (getUserTokenByMobileSecret)","description":"Returns the token of the User based on the provided secret key.","operationId":"getUserTokenByMobileSecret","parameters":[{"name":"secret","in":"path","description":"A string value representing short-lived secret key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JwtPair"}}}}}}},"/api/noauth/mobile":{"get":{"tags":["mobile-app-controller"],"summary":"Get mobile app login info (getLoginMobileInfo)","operationId":"getLoginMobileInfo","parameters":[{"name":"pkgName","in":"query","description":"Mobile application package name","required":true,"schema":{"type":"string"}},{"name":"platform","in":"query","description":"Platform type","required":true,"schema":{"type":"string","enum":["ANDROID","IOS"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginMobileInfo"}}}}}}},"/api/noauth/login":{"get":{"tags":["sign-up-controller"],"operationId":"mobileLogin","parameters":[{"name":"pkgName","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/noauth/activateEmail":{"get":{"tags":["sign-up-controller"],"operationId":"activateEmail","parameters":[{"name":"emailCode","in":"query","required":true,"schema":{"type":"string"}},{"name":"pkgName","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/mobile":{"get":{"tags":["mobile-app-controller"],"summary":"Get user mobile app basic info (getUserMobileInfo)","description":"\n\nAvailable for any authorized user. ","operationId":"getUserMobileInfo","parameters":[{"name":"pkgName","in":"query","description":"Mobile application package name","required":true,"schema":{"type":"string"}},{"name":"platform","in":"query","description":"Platform type","required":true,"schema":{"type":"string","enum":["ANDROID","IOS"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMobileInfo"}}}}}}},"/api/mobile/qr/deepLink":{"get":{"tags":["qr-code-settings-controller"],"summary":"Get the deep link to the associated mobile application (getMobileAppDeepLink)","description":"Fetch the url that takes user to linked mobile application \n\nAvailable for any authorized user. ","operationId":"getMobileAppDeepLink","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/mobile/bundle/infos":{"get":{"tags":["mobile-app-bundle-controller"],"summary":"Get mobile app bundle infos (getTenantMobileAppBundleInfos)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getTenantMobileAppBundleInfos","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":"Case-insensitive 'substring' filter based on app's name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataMobileAppBundleInfo"}}}}}}},"/api/mobile/bundle/info/{id}":{"get":{"tags":["mobile-app-bundle-controller"],"summary":"Get mobile app bundle info by id (getMobileAppBundleInfoById)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getMobileAppBundleInfoById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileAppBundleInfo"}}}}}}},"/api/mobile/app/{id}":{"get":{"tags":["mobile-app-controller"],"summary":"Get mobile info by id (getMobileAppInfoById)","description":"\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getMobileAppById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileApp"}}}}}},"delete":{"tags":["mobile-app-controller"],"summary":"Delete Mobile App by ID (deleteMobileApp)","description":"Deletes Mobile App by ID. Referencing non-existing mobile app Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteMobileApp","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/mail/config/template":{"get":{"tags":["mail-config-template-controller"],"summary":"Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates)\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","description":"Mail configuration template is set of default smtp settings for mail server that specific provider supports","operationId":"getClientRegistrationTemplates_1","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/lwm2m/deviceProfile/bootstrap/{isBootstrapServer}":{"get":{"tags":["lwm-2m-controller"],"summary":"Get Lwm2m Bootstrap SecurityInfo (getLwm2mBootstrapSecurityInfo)","description":"Get the Lwm2m Bootstrap SecurityInfo object (of the current server) based on the provided isBootstrapServer parameter. If isBootstrapServer == true, get the parameters of the current Bootstrap Server. If isBootstrapServer == false, get the parameters of the current Lwm2m Server. Used for client settings when starting the client in Bootstrap mode. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getLwm2mBootstrapSecurityInfo","parameters":[{"name":"isBootstrapServer","in":"path","description":"A Boolean value representing the Server SecurityInfo for future Bootstrap client mode settings. Values: 'true' for Bootstrap Server; 'false' for Lwm2m Server. ","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LwM2MServerSecurityConfigDefault"}}}}}}},"/api/jobs":{"get":{"tags":["job-controller"],"operationId":"getJobs","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":"Case-insensitive 'substring' filter based on job's description","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["DUMMY"]}}},{"name":"statuses","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["QUEUED","PENDING","RUNNING","COMPLETED","FAILED","CANCELLED"]}}},{"name":"entities","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"startTime","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataJob"}}}}}}},"/api/job/{id}":{"get":{"tags":["job-controller"],"operationId":"getJobById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}}}},"delete":{"tags":["job-controller"],"operationId":"deleteJob","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/images":{"get":{"tags":["image-controller"],"operationId":"getImages","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":"imageSubType","in":"query","description":"A string value representing resource sub-type.","required":false,"schema":{"type":"string","enum":["IMAGE","SCADA_SYMBOL"]}},{"name":"includeSystemImages","in":"query","description":"Use 'true' to include system images. Disabled by default. Ignored for requests by users with system administrator authority.","required":false,"schema":{"type":"boolean"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the resource title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","resourceType","tenantId"]}},{"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/PageDataTbResourceInfo"}}}}}}},"/api/images/{type}/{key}/preview":{"get":{"tags":["image-controller"],"operationId":"downloadImagePreview","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/images/{type}/{key}/export":{"get":{"tags":["image-controller"],"operationId":"exportImage","parameters":[{"name":"type","in":"path","description":"Type of the image: tenant or system","required":true,"schema":{"type":"string","enum":["tenant","system"]}},{"name":"key","in":"path","description":"Image resource key, for example thermostats_dashboard_background.jpeg","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceExportData"}}}}}}},"/api/images/public/{publicResourceKey}":{"get":{"tags":["image-controller"],"operationId":"downloadPublicImage","parameters":[{"name":"publicResourceKey","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"image/*":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/events/{entityType}/{entityId}/{eventType}":{"get":{"tags":["event-controller"],"summary":"Get Events by type (getEvents)","description":"Returns a page of events for specified entity by specifying event type. 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. ","operationId":"getEvents_2","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"eventType","in":"path","description":"A string value representing event type","required":true,"schema":{"type":"string"},"example":"STATS"},{"name":"tenantId","in":"query","description":"A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The value is not used in searching.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["ts","id"]}},{"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. Events with creation time before it won't be queried.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Events 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/PageDataEventInfo"}}}}}}},"/api/entityView/{entityViewId}":{"get":{"tags":["entity-view-controller"],"summary":"Get entity view (getEntityViewById)","description":"Fetch the EntityView object based on the provided entity view id. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEntityViewById","parameters":[{"name":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}},"delete":{"tags":["entity-view-controller"],"summary":"Delete entity view (deleteEntityView)","description":"Delete the EntityView object based on the provided entity view id. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteEntityView","parameters":[{"name":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/entityView/types":{"get":{"tags":["entity-view-controller"],"summary":"Get Entity View Types (getEntityViewTypes)","description":"Returns a set of unique entity view types based on entity views that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEntityViewTypes","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntitySubtype"}}}}}}}},"/api/entityView/info/{entityViewId}":{"get":{"tags":["entity-view-controller"],"summary":"Get Entity View info (getEntityViewInfoById)","description":"Fetch the Entity View info object based on the provided Entity View Id. Entity Views Info extends the Entity View with customer title and 'is public' flag. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. See the 'Model' tab for more details.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEntityViewInfoById","parameters":[{"name":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityViewInfo"}}}}}}},"/api/entities/vc/version/{requestId}/status":{"get":{"tags":["entities-version-control-controller"],"summary":"Get version create request status (getVersionCreateRequestStatus)","description":"Returns the status of previously made version create request. \n\nThis status contains following properties:\n- `done` - whether request processing is finished;\n- `version` - created version info: timestamp, version id (commit hash), commit name and commit author;\n- `added` - count of items that were created in the remote repo;\n- `modified` - modified items count;\n- `removed` - removed items count;\n- `error` - error message, if an error occurred while handling the request.\n\nAn example of successful status:\n```json\n{\n  \"done\": true,\n  \"added\": 10,\n  \"modified\": 2,\n  \"removed\": 5,\n  \"version\": {\n    \"timestamp\": 1655198528000,\n    \"id\":\"8a834dd389ed80e0759ba8ee338b3f1fd160a114\",\n    \"name\": \"My devices v2.0\",\n    \"author\": \"John Doe\"\n  },\n  \"error\": null\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getVersionCreateRequestStatus","parameters":[{"name":"requestId","in":"path","description":"A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionCreationResult"}}}}}}},"/api/entities/vc/version/{entityType}":{"get":{"tags":["entities-version-control-controller"],"summary":"List entity type versions (listEntityTypeVersions)","description":"Returns list of versions of an entity type in a branch. This is a collected list of versions that were created for entities of this type in a remote branch. \nIf specified branch does not exist - empty page data will be returned. The response structure is the same as for `listEntityVersions` API method.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"listEntityTypeVersions","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"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"]}},{"name":"branch","in":"query","description":"The name of the working branch, for example 'master'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity version name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["timestamp"]}},{"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/PageDataEntityVersion"}}}}}}},"/api/entities/vc/version/{entityType}/{externalEntityUuid}":{"get":{"tags":["entities-version-control-controller"],"summary":"List entity versions (listEntityVersions)","description":"Returns list of versions for a specific entity in a concrete branch. \nYou need to specify external id of an entity to list versions for. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity. \nIf specified branch does not exist - empty page data will be returned. \n\nEach version info item has timestamp, id, name and author. Version id can then be used to restore the version. 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\nResponse example: \n```json\n{\n  \"data\": [\n    {\n      \"timestamp\": 1655198593000,\n      \"id\": \"fd82625bdd7d6131cf8027b44ee967012ecaf990\",\n      \"name\": \"Devices and assets - v2.0\",\n      \"author\": \"John Doe <johndoe@gmail.com>\"\n    },\n    {\n      \"timestamp\": 1655198528000,\n      \"id\": \"682adcffa9c8a2f863af6f00c4850323acbd4219\",\n      \"name\": \"Update my device\",\n      \"author\": \"John Doe <johndoe@gmail.com>\"\n    },\n    {\n      \"timestamp\": 1655198280000,\n      \"id\": \"d2a6087c2b30e18cc55e7cdda345a8d0dfb959a4\",\n      \"name\": \"Devices and assets - v1.0\",\n      \"author\": \"John Doe <johndoe@gmail.com>\"\n    }\n  ],\n  \"totalPages\": 1,\n  \"totalElements\": 3,\n  \"hasNext\": false\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"listEntityVersions","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"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"]}},{"name":"externalEntityUuid","in":"path","description":"A string value representing external entity id. This is `externalId` property of an entity, or otherwise if not set - simply id of this entity.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"branch","in":"query","description":"The name of the working branch, for example 'master'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity version name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["timestamp"]}},{"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/PageDataEntityVersion"}}}}}}},"/api/entities/vc/info/{versionId}/{entityType}/{externalEntityUuid}":{"get":{"tags":["entities-version-control-controller"],"summary":"Get entity data info (getEntityDataInfo)","description":"Retrieves short info about the remote entity by external id at a concrete version. \nReturned entity data info contains following properties: `hasRelations` (whether stored entity data contains relations), `hasAttributes` (contains attributes) and `hasCredentials` (whether stored device data has credentials).\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getEntityDataInfo","parameters":[{"name":"versionId","in":"path","description":"Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.","required":true,"schema":{"type":"string"}},{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"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"]}},{"name":"externalEntityUuid","in":"path","description":"A string value representing external entity id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDataInfo"}}}}}}},"/api/entities/vc/entity/{versionId}":{"get":{"tags":["entities-version-control-controller"],"summary":"List all entities at version (listAllEntitiesAtVersion)","description":"Returns a list of all remote entities available in a specific version. Response type is the same as for listAllEntitiesAtVersion API method. \nReturned entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"listAllEntitiesAtVersion","parameters":[{"name":"versionId","in":"path","description":"Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VersionedEntityInfo"}}}}}}}},"/api/entities/vc/entity/{requestId}/status":{"get":{"tags":["entities-version-control-controller"],"summary":"Get version load request status (getVersionLoadRequestStatus)","description":"Returns the status of previously made version load request. The structure contains following parameters:\n- `done` - if the request was successfully processed;\n- `result` - a list of load results for each entity type:\n     - `created` - created entities count;\n     - `updated` - updated entities count;\n     - `deleted` - removed entities count.\n- `error` - if an error occurred during processing, error info:\n     - `type` - error type;\n     - `source` - an external id of remote entity;\n     - `target` - if failed to find referenced entity by external id - this external id;\n     - `message` - error message.\n\nAn example of successfully processed request status:\n```json\n{\n  \"done\": true,\n  \"result\": [\n    {\n      \"entityType\": \"DEVICE\",\n      \"created\": 10,\n      \"updated\": 5,\n      \"deleted\": 5\n    },\n     {\n      \"entityType\": \"ASSET\",\n      \"created\": 4,\n      \"updated\": 0,\n      \"deleted\": 8\n    }\n  ]\n}\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getVersionLoadRequestStatus","parameters":[{"name":"requestId","in":"path","description":"A string value representing the version control request id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionLoadResult"}}}}}}},"/api/entities/vc/entity/{entityType}/{versionId}":{"get":{"tags":["entities-version-control-controller"],"summary":"List entities at version (listEntitiesAtVersion)","description":"Returns a list of remote entities of a specific entity type that are available at a concrete version. \nEach entity item in the result has `externalId` property. Entities order will be the same as in the repository.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"listEntitiesAtVersion","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"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"]}},{"name":"versionId","in":"path","description":"Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VersionedEntityInfo"}}}}}}}},"/api/entities/vc/diff/{entityType}/{internalEntityUuid}":{"get":{"tags":["entities-version-control-controller"],"summary":"Compare entity data to version (compareEntityDataToVersion)","description":"Returns an object with current entity data and the one at a specific version. Entity data structure is the same as stored in a repository. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"compareEntityDataToVersion","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"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"]}},{"name":"internalEntityUuid","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"versionId","in":"query","description":"Version id, for example fd82625bdd7d6131cf8027b44ee967012ecaf990. Represents commit hash.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDataDiff"}}}}}}},"/api/entities/vc/branches":{"get":{"tags":["entities-version-control-controller"],"summary":"List branches (listBranches)","description":"Lists branches available in the remote repository. \n\nResponse example: \n```json\n[\n  {\n    \"name\": \"master\",\n    \"default\": true\n  },\n  {\n    \"name\": \"dev\",\n    \"default\": false\n  },\n  {\n    \"name\": \"dev-2\",\n    \"default\": false\n  }\n]\n```","operationId":"listBranches","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BranchInfo"}}}}}}}},"/api/edqs/state":{"get":{"tags":["entity-query-controller"],"operationId":"getEdqsState","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdqsState"}}}}}}},"/api/edges/enabled":{"get":{"tags":["edge-controller"],"summary":"Is edges support enabled (isEdgesSupportEnabled)","description":"Returns 'true' if edges support enabled on server, 'false' - otherwise.","operationId":"isEdgesSupportEnabled","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/edge/{edgeId}":{"get":{"tags":["edge-controller"],"summary":"Get Edge (getEdgeById)","description":"Get the Edge object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEdgeById","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}},"delete":{"tags":["edge-controller"],"summary":"Delete edge (deleteEdge)","description":"Deletes the edge. Referencing non-existing edge Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteEdge","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/edge/{edgeId}/upgrade/available":{"get":{"tags":["edge-controller"],"summary":"Is edge upgrade enabled (isEdgeUpgradeAvailable)","description":"Returns 'true' if upgrade available for connected edge, 'false' - otherwise.","operationId":"isEdgeUpgradeAvailable","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/edge/{edgeId}/ruleChains":{"get":{"tags":["rule-chain-controller"],"summary":"Get Edge Rule Chains (getEdgeRuleChains)","description":"Returns a page of Rule Chains assigned to the specified edge. The rule chain object is lightweight and contains general information about the rule chain. List of rule nodes and their connection is stored in a separate 'metadata' object.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":"getEdgeRuleChains","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":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the rule chain 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","root"]}},{"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/PageDataRuleChain"}}}}}}},"/api/edge/{edgeId}/events":{"get":{"tags":["edge-event-controller"],"summary":"Get Edge Events (getEdgeEvents)","description":"Returns a page of edge events for the requested 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. ","operationId":"getEdgeEvents","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":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge event type name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"startTime","in":"query","description":"Timestamp. Edge events with creation time before it won't be queried","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Edge events 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/PageDataEdgeEvent"}}}}}}},"/api/edge/{edgeId}/entityViews":{"get":{"tags":["entity-view-controller"],"operationId":"getEdgeEntityViews","parameters":[{"name":"edgeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","required":false,"schema":{"type":"string"}},{"name":"startTime","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEntityView"}}}}}}},"/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/edge/{edgeId}/dashboards":{"get":{"tags":["dashboard-controller"],"summary":"Get Edge Dashboards (getEdgeDashboards)","description":"Returns a page of dashboard info objects assigned to the specified edge. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. 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":"getEdgeDashboards","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":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the dashboard title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title"]}},{"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/PageDataDashboardInfo"}}}}}}},"/api/edge/{edgeId}/assets":{"get":{"tags":["asset-controller"],"summary":"Get assets assigned to edge (getEdgeAssets)","description":"Returns a page of assets 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. ","operationId":"getEdgeAssets","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":"Asset type","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the asset name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"startTime","in":"query","description":"Timestamp. Assets with creation time before it won't be queried","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"Timestamp. Assets 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/PageDataAsset"}}}}}}},"/api/edge/types":{"get":{"tags":["edge-controller"],"summary":"Get Edge Types (getEdgeTypes)","description":"Returns a set of unique edge types based on edges that are either owned by the tenant or assigned to the customer which user is performing the request.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEdgeTypes","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntitySubtype"}}}}}}}},"/api/edge/missingToRelatedRuleChains/{edgeId}":{"get":{"tags":["edge-controller"],"summary":"Find missing rule chains (findMissingToRelatedRuleChains)","description":"Returns list of rule chains ids that are not assigned to particular edge, but these rule chains are present in the already assigned rule chains to edge.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"findMissingToRelatedRuleChains","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/edge/instructions/upgrade/{edgeVersion}/{method}":{"get":{"tags":["edge-controller"],"summary":"Get Edge Upgrade Instructions (getEdgeUpgradeInstructions)","description":"Get an upgrade instructions for provided edge version.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getEdgeUpgradeInstructions","parameters":[{"name":"edgeVersion","in":"path","description":"Edge version","required":true,"schema":{"type":"string"}},{"name":"method","in":"path","description":"Upgrade method ('docker', 'ubuntu' or 'centos')","required":true,"schema":{"type":"string","enum":["docker","ubuntu","centos"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdgeInstructions"}}}}}}},"/api/edge/instructions/install/{edgeId}/{method}":{"get":{"tags":["edge-controller"],"summary":"Get Edge Install Instructions (getEdgeInstallInstructions)","description":"Get an install instructions for provided edge id.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getEdgeInstallInstructions","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"method","in":"path","description":"Installation method ('docker', 'ubuntu' or 'centos')","required":true,"schema":{"type":"string","enum":["docker","ubuntu","centos"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdgeInstructions"}}}}}}},"/api/edge/info/{edgeId}":{"get":{"tags":["edge-controller"],"summary":"Get Edge Info (getEdgeInfoById)","description":"Get the Edge Info object based on the provided Edge Id. If the user has the authority of 'Tenant Administrator', the server checks that the edge is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the edge is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getEdgeInfoById","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EdgeInfo"}}}}}}},"/api/domain/infos":{"get":{"tags":["domain-controller"],"summary":"Get Domain infos (getTenantDomainInfos)","description":"\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getTenantDomainInfos","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":"Case-insensitive 'substring' filter based on domain's name","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataDomainInfo"}}}}}}},"/api/domain/info/{id}":{"get":{"tags":["domain-controller"],"summary":"Get Domain info by Id (getDomainInfoById)","description":"\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getDomainInfoById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainInfo"}}}}}}},"/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\n\nAvailable 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.\n\nAvailable 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.\n\nAvailable 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.\n\nAvailable 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.\n\nAvailable 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.\n\nAvailable 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.\n\nAvailable 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/dashboards":{"get":{"tags":["dashboard-controller"],"summary":"Get dashboards by Dashboard Ids (getDashboardsByIds)","description":"Returns a list of DashboardInfo objects based on the provided ids. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getDashboardsByIds","parameters":[{"name":"dashboardIds","in":"query","description":"A list of dashboard 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/DashboardInfo"}}}}}}}},"/api/dashboard/{dashboardId}":{"get":{"tags":["dashboard-controller"],"summary":"Get Dashboard (getDashboardById)","description":"Get the dashboard based on 'dashboardId' parameter. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getDashboardById","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"includeResources","in":"query","description":"Export used resources and replace resource links with resource metadata","required":false,"schema":{"type":"boolean"}},{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"delete":{"tags":["dashboard-controller"],"summary":"Delete the Dashboard (deleteDashboard)","description":"Delete the Dashboard.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteDashboard","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/dashboard/serverTime":{"get":{"tags":["dashboard-controller"],"summary":"Get server time (getServerTime)","description":"Get the server time (milliseconds since January 1, 1970 UTC). Used to adjust view of the dashboards according to the difference between browser and server time.","operationId":"getServerTime","responses":{"200":{"description":"OK","content":{"application/json":{"example":1636023857137}}}}}},"/api/dashboard/maxDatapointsLimit":{"get":{"tags":["dashboard-controller"],"summary":"Get max data points limit (getMaxDatapointsLimit)","description":"Get the maximum number of data points that dashboard may request from the server per in a single subscription command. This value impacts the time window behavior. It impacts 'Max values' parameter in case user selects 'None' as 'Data aggregation function'. It also impacts the 'Grouping interval' in case of any other 'Data aggregation function' is selected. The actual value of the limit is configurable in the system configuration file.","operationId":"getMaxDatapointsLimit","responses":{"200":{"description":"OK","content":{"application/json":{"example":5000}}}}}},"/api/dashboard/info/{dashboardId}":{"get":{"tags":["dashboard-controller"],"summary":"Get Dashboard Info (getDashboardInfoById)","description":"Get the information about the dashboard based on 'dashboardId' parameter. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON.","operationId":"getDashboardInfoById","parameters":[{"name":"dashboardId","in":"path","description":"A string value representing the dashboard id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardInfo"}}}}}}},"/api/dashboard/home":{"get":{"tags":["dashboard-controller"],"summary":"Get Home Dashboard (getHomeDashboard)","description":"Returns the home dashboard object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. The Dashboard object is a heavyweight object that contains information about the dashboard (e.g. title, image, assigned customers) and also configuration JSON (e.g. layouts, widgets, entity aliases).\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getHomeDashboard","parameters":[{"name":"Accept-Encoding","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/dashboard/home/info":{"get":{"tags":["dashboard-controller"],"summary":"Get Home Dashboard Info (getHomeDashboardInfo)","description":"Returns the home dashboard info object that is configured as 'homeDashboardId' parameter in the 'additionalInfo' of the User. If 'homeDashboardId' parameter is not set on the User level and the User has authority 'CUSTOMER_USER', check the same parameter for the corresponding Customer. If 'homeDashboardId' parameter is not set on the User and Customer levels then checks the same parameter for the Tenant that owns the user. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getHomeDashboardInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeDashboardInfo"}}}}}}},"/api/customers":{"get":{"tags":["customer-controller"],"summary":"Get customers by Customer Ids (getCustomersByIds)","description":"Returns a list of Customer objects based on the provided ids.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getCustomers","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 customer title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title","email","country","city"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"customerIds","in":"query","description":"A list of customer 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/Customer"}},{"$ref":"#/components/schemas/PageDataCustomer"}]}}}}}}},"/api/customer/{customerId}":{"get":{"tags":["customer-controller"],"summary":"Get Customer (getCustomerById)","description":"Get the Customer object based on the provided Customer Id. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getCustomerById","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"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}}}},"delete":{"tags":["customer-controller"],"summary":"Delete Customer (deleteCustomer)","description":"Deletes the Customer and all customer Users. All assigned Dashboards, Assets, Devices, etc. will be unassigned but not deleted. Referencing non-existing Customer Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteCustomer","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"}}],"responses":{"200":{"description":"OK"}}}},"/api/customer/{customerId}/users":{"get":{"tags":["user-controller"],"summary":"Get Customer Users (getCustomerUsers)","description":"Returns a page of users owned by customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getCustomerUsers","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":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the user email.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","firstName","lastName","email"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataUser"}}}}}}},"/api/customer/{customerId}/title":{"get":{"tags":["customer-controller"],"summary":"Get Customer Title (getCustomerTitleById)","description":"Get the title of the customer. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getCustomerTitleById","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"}}],"responses":{"200":{"description":"OK","content":{"application/text":{"schema":{"type":"string"}}}}}}},"/api/customer/{customerId}/shortInfo":{"get":{"tags":["customer-controller"],"summary":"Get short Customer info (getShortCustomerInfoById)","description":"Get the short customer object that contains only the title and 'isPublic' flag. If the user has the authority of 'Tenant Administrator', the server checks that the customer is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the user belongs to the customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getShortCustomerInfoById","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"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/customer/{customerId}/entityViews":{"get":{"tags":["entity-view-controller"],"summary":"Get Customer Entity Views (getCustomerEntityViews)","description":"Returns a page of Entity View 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":"getCustomerEntityViews","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":"\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity view 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"]}},{"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/PageDataEntityView"}}}}}}},"/api/customer/{customerId}/entityViewInfos":{"get":{"tags":["entity-view-controller"],"summary":"Get Customer Entity View info (getCustomerEntityViewInfos)","description":"Returns a page of Entity View info objects assigned to customer. Entity Views limit the degree of exposure of the Device or Asset telemetry and attributes to the Customers. Every Entity View references exactly one entity (device or asset) and defines telemetry and attribute keys that will be visible to the assigned Customer. As a Tenant Administrator you are able to create multiple EVs per Device or Asset and assign them to different Customers. 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":"getCustomerEntityViewInfos","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":"\n\n## Entity View Filter\n\nAllows to filter entity views based on their type and the **'starts with'** expression over their name. For example, this entity filter selects all 'Concrete Mixer' entity views which name starts with 'CAT':\n\n```json\n{\n  \"type\": \"entityViewType\",\n  \"entityViewType\": \"Concrete Mixer\",\n  \"entityViewNameFilter\": \"CAT\"\n}\n```","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the entity view 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","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/PageDataEntityViewInfo"}}}}}}},"/api/customer/{customerId}/edges":{"get":{"tags":["edge-controller"],"summary":"Get Customer Edges (getCustomerEdges)","description":"Returns a page of edges objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getCustomerEdges","parameters":[{"name":"customerId","in":"path","description":"A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","description":"A string value representing the edge type. For example, 'default'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEdge"}}}}}}},"/api/customer/{customerId}/edgeInfos":{"get":{"tags":["edge-controller"],"summary":"Get Customer Edge Infos (getCustomerEdgeInfos)","description":"Returns a page of edges info objects assigned to customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. Edge Info is an extension of the default Edge object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getCustomerEdgeInfos","parameters":[{"name":"customerId","in":"path","description":"A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","description":"A string value representing the edge type. For example, 'default'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the edge name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataEdgeInfo"}}}}}}},"/api/customer/{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/{customerId}/dashboards":{"get":{"tags":["dashboard-controller"],"summary":"Get Customer Dashboards (getCustomerDashboards)","description":"Returns a page of dashboard info objects owned by the specified customer. The Dashboard Info object contains lightweight information about the dashboard (e.g. title, image, assigned customers) but does not contain the heavyweight configuration JSON. 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":"getCustomerDashboards","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":"mobile","in":"query","description":"Exclude dashboards that are hidden for mobile","required":false,"schema":{"type":"boolean"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the dashboard title.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","title"]}},{"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/PageDataDashboardInfo"}}}}}}},"/api/customer/{customerId}/assets":{"get":{"tags":["asset-controller"],"summary":"Get Customer Assets (getCustomerAssets)","description":"Returns a page of assets 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. ","operationId":"getCustomerAssets","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":"Asset type","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the asset name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAsset"}}}}}}},"/api/customer/{customerId}/assetInfos":{"get":{"tags":["asset-controller"],"summary":"Get Customer Asset Infos (getCustomerAssetInfos)","description":"Returns a page of assets 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. Asset Info is an extension of the default Asset object that contains information about the assigned customer name. ","operationId":"getCustomerAssetInfos","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":"Asset type","required":false,"schema":{"type":"string"}},{"name":"assetProfileId","in":"query","description":"A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the asset name.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","name","type","label","customerTitle"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAssetInfo"}}}}}}},"/api/components":{"get":{"tags":["component-descriptor-controller"],"summary":"Get Component Descriptors (getComponentDescriptorsByTypes)","description":"Gets the Component Descriptors using coma separated list of rule node types and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getComponentDescriptorsByTypes","parameters":[{"name":"componentTypes","in":"query","description":"List of types of the Rule Nodes, (ENRICHMENT, FILTER, TRANSFORMATION, ACTION or EXTERNAL)","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"ruleChainType","in":"query","description":"Type of the Rule Chain","required":false,"schema":{"type":"string","enum":["CORE","EDGE"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentDescriptor"}}}}}}}},"/api/components/{componentType}":{"get":{"tags":["component-descriptor-controller"],"summary":"Get Component Descriptors (getComponentDescriptorsByType)","description":"Gets the Component Descriptors using rule node type and optional rule chain type request parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getComponentDescriptorsByType","parameters":[{"name":"componentType","in":"path","description":"Type of the Rule Node","required":true,"schema":{"type":"string","enum":["ENRICHMENT","FILTER","TRANSFORMATION","ACTION","EXTERNAL"]}},{"name":"ruleChainType","in":"query","description":"Type of the Rule Chain","required":false,"schema":{"type":"string","enum":["CORE","EDGE"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentDescriptor"}}}}}}}},"/api/component/{componentDescriptorClazz}":{"get":{"tags":["component-descriptor-controller"],"summary":"Get Component Descriptor (getComponentDescriptorByClazz)","description":"Gets the Component Descriptor object using class name from the path parameters. Each Component Descriptor represents configuration of specific rule node (e.g. 'Save Timeseries' or 'Send Email'.). The Component Descriptors are used by the rule chain Web UI to build the configuration forms for the rule nodes. The Component Descriptors are discovered at runtime by scanning the class path and searching for @RuleNode annotation. Once discovered, the up to date list of descriptors is persisted to the database.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"getComponentDescriptorByClazz","parameters":[{"name":"componentDescriptorClazz","in":"path","description":"Component Descriptor class name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComponentDescriptor"}}}}}}},"/api/calculatedFields":{"get":{"tags":["calculated-field-controller"],"summary":"Get calculated fields (getCalculatedFields)","description":"Fetch tenant calculated fields based on the filter.","operationId":"getCalculatedFields","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":"types","in":"query","description":"Calculated field types filter.","required":false,"schema":{"type":"array","items":{"type":"string","enum":["SIMPLE","SCRIPT","GEOFENCING","ALARM","PROPAGATION","RELATED_ENTITIES_AGGREGATION","ENTITY_AGGREGATION"]},"uniqueItems":true}},{"name":"entityType","in":"query","description":"Entity type filter. If not specified, calculated fields for all supported entity types will be returned.","required":false,"schema":{"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"]}},{"name":"entities","in":"query","description":"Entities filter. If not specified, calculated fields for entity type filter will be returned.","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true}},{"name":"name","in":"query","description":"Name filter. To specify multiple names, duplicate 'name' parameter for each name, for example '?name=name1&name=name2","required":false,"schema":{"type":"string"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on the calculated field 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"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataCalculatedFieldInfo"}}}}}}},"/api/calculatedFields/names":{"get":{"tags":["calculated-field-controller"],"summary":"Get calculated field names (getCalculatedFieldNames)","description":"Fetch the list of calculated field names for specified type.","operationId":"getCalculatedFieldNames","parameters":[{"name":"type","in":"query","description":"Calculated field type filter.","required":true,"schema":{"type":"string","enum":["SIMPLE","SCRIPT","GEOFENCING","ALARM","PROPAGATION","RELATED_ENTITIES_AGGREGATION","ENTITY_AGGREGATION"]}},{"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 calculated field name.","required":false,"schema":{"type":"string"}},{"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/PageDataString"}}}}}}},"/api/calculatedField/{calculatedFieldId}":{"get":{"tags":["calculated-field-controller"],"summary":"Get Calculated Field (getCalculatedFieldById)","description":"Fetch the Calculated Field object based on the provided Calculated Field Id.","operationId":"getCalculatedFieldById","parameters":[{"name":"calculatedFieldId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculatedField"}}}}}},"delete":{"tags":["calculated-field-controller"],"summary":"Delete Calculated Field (deleteCalculatedField)","description":"Deletes the calculated field. Referencing non-existing Calculated Field Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteCalculatedField","parameters":[{"name":"calculatedFieldId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/calculatedField/{calculatedFieldId}/debug":{"get":{"tags":["calculated-field-controller"],"summary":"Get latest calculated field debug event (getLatestCalculatedFieldDebugEvent)","description":"Gets latest calculated field debug event for specified calculated field id. Referencing non-existing calculated field id will cause an error. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getLatestCalculatedFieldDebugEvent","parameters":[{"name":"calculatedFieldId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/auth/user":{"get":{"tags":["auth-controller"],"summary":"Get current User (getUser)","description":"Get the information about the User which credentials are used to perform this REST API call.","operationId":"getUser","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}}}},"/api/auth/2fa/providers":{"get":{"tags":["two-factor-auth-controller"],"summary":"Get available 2FA providers (getAvailableTwoFaProviders)","description":"Get the list of 2FA provider infos available for user to use. Example:\n```\n[\n  {\n    \"type\": \"EMAIL\",\n    \"default\": true,\n    \"contact\": \"ab*****ko@gmail.com\"\n  },\n  {\n    \"type\": \"TOTP\",\n    \"default\": false,\n    \"contact\": null\n  },\n  {\n    \"type\": \"SMS\",\n    \"default\": false,\n    \"contact\": \"+38********12\"\n  }\n]\n```","operationId":"getAvailableTwoFaProviders","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TwoFaProviderInfo"}}}}}}}},"/api/audit/logs":{"get":{"tags":["audit-log-controller"],"summary":"Get all audit logs (getAuditLogs)","description":"Returns a page of audit logs related to all entities in the scope of the current user's 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":"getAuditLogs","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 one of the next properties: entityType, entityName, userName, actionType, actionStatus.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.","required":false,"schema":{"type":"string","enum":["createdTime","entityType","entityName","userName","actionType","actionStatus"]}},{"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":"The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"actionTypes","in":"query","description":"A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAuditLog"}}}}}}},"/api/audit/logs/user/{userId}":{"get":{"tags":["audit-log-controller"],"summary":"Get audit logs by user id (getAuditLogsByUserId)","description":"Returns a page of audit logs related to the actions of targeted user. For example, RPC call to a particular device, or alarm acknowledgment for a specific device, etc. 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":"getAuditLogsByUserId","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"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 one of the next properties: entityType, entityName, userName, actionType, actionStatus.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.","required":false,"schema":{"type":"string","enum":["createdTime","entityType","entityName","userName","actionType","actionStatus"]}},{"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":"The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"actionTypes","in":"query","description":"A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAuditLog"}}}}}}},"/api/audit/logs/entity/{entityType}/{entityId}":{"get":{"tags":["audit-log-controller"],"summary":"Get audit logs by entity id (getAuditLogsByEntityId)","description":"Returns a page of audit logs related to the actions on the targeted entity. Basically, this API call is used to get the full lifecycle of some specific entity. For example to see when a device was created, updated, assigned to some customer, or even deleted from the system. 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":"getAuditLogsByEntityId","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.","required":false,"schema":{"type":"string","enum":["createdTime","entityType","entityName","userName","actionType","actionStatus"]}},{"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":"The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"actionTypes","in":"query","description":"A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAuditLog"}}}}}}},"/api/audit/logs/customer/{customerId}":{"get":{"tags":["audit-log-controller"],"summary":"Get audit logs by customer id (getAuditLogsByCustomerId)","description":"Returns a page of audit logs related to the targeted customer entities (devices, assets, etc.), and users actions (login, logout, etc.) that belong to this customer. You can specify parameters to filter the results. The result is wrapped with PageData object that allows you to iterate over result set using pagination. See response schema for more details. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getAuditLogsByCustomerId","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":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on one of the next properties: entityType, entityName, userName, actionType, actionStatus.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of audit log to sort by. See the 'Model' tab of the Response Class for more details. Note: entityType sort property is not defined in the AuditLog class, however, it can be used to sort audit logs by types of entities that were logged.","required":false,"schema":{"type":"string","enum":["createdTime","entityType","entityName","userName","actionType","actionStatus"]}},{"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":"The start timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the AuditLog class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"actionTypes","in":"query","description":"A String value representing comma-separated list of action types. This parameter is optional, but it can be used to filter results to fetch only audit logs of specific action types. For example, 'LOGIN', 'LOGOUT'. See the 'Model' tab of the Response Class for more details.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAuditLog"}}}}}}},"/api/assetProfiles":{"get":{"tags":["asset-profile-controller"],"summary":"Get Asset Profiles (getAssetProfiles)","description":"Returns a page of asset 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":"getAssetProfiles","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 asset 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","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/PageDataAssetProfile"}}}}}}},"/api/assetProfileInfos":{"get":{"tags":["asset-profile-controller"],"summary":"Get Asset Profiles By Ids (getAssetProfilesByIds)","description":"Requested asset profiles must be owned by tenant which is performing the request. \n\n","operationId":"getAssetProfileInfos","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 asset 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","description","isDefault"]}},{"name":"sortOrder","in":"query","description":"Sort order. ASC (ASCENDING) or DESC (DESCENDING)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"assetProfileIds","in":"query","description":"A list of asset 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/AssetProfileInfo"}},{"$ref":"#/components/schemas/PageDataAssetProfileInfo"}]}}}}}}},"/api/assetProfileInfo/{assetProfileId}":{"get":{"tags":["asset-profile-controller"],"summary":"Get Asset Profile Info (getAssetProfileInfoById)","description":"Fetch the Asset Profile Info object based on the provided Asset Profile Id. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAssetProfileInfoById","parameters":[{"name":"assetProfileId","in":"path","description":"A string value representing the asset 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/AssetProfileInfo"}}}}}}},"/api/assetProfileInfo/default":{"get":{"tags":["asset-profile-controller"],"summary":"Get Default Asset Profile (getDefaultAssetProfileInfo)","description":"Fetch the Default Asset Profile Info object. Asset Profile Info is a lightweight object that includes main information about Asset Profile. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getDefaultAssetProfileInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetProfileInfo"}}}}}}},"/api/assetProfile/{assetProfileId}":{"get":{"tags":["asset-profile-controller"],"summary":"Get Asset Profile (getAssetProfileById)","description":"Fetch the Asset Profile object based on the provided Asset Profile Id. The server checks that the asset profile is owned by the same tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getAssetProfileById","parameters":[{"name":"assetProfileId","in":"path","description":"A string value representing the asset 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/AssetProfile"}}}}}},"delete":{"tags":["asset-profile-controller"],"summary":"Delete asset profile (deleteAssetProfile)","description":"Deletes the asset profile. Referencing non-existing asset profile Id will cause an error. Can't delete the asset profile if it is referenced by existing assets.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteAssetProfile","parameters":[{"name":"assetProfileId","in":"path","description":"A string value representing the asset profile id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/assetProfile/names":{"get":{"tags":["asset-profile-controller"],"summary":"Get Asset Profile names (getAssetProfileNames)","description":"Returns a set of unique asset profile names owned by the tenant.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAssetProfileNames","parameters":[{"name":"activeOnly","in":"query","description":"Flag indicating whether to retrieve exclusively the names of asset profiles that are referenced by tenant's assets.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityInfo"}}}}}}}},"/api/asset/{assetId}":{"get":{"tags":["asset-controller"],"summary":"Get Asset (getAssetById)","description":"Fetch the Asset object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAssetById","parameters":[{"name":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}},"delete":{"tags":["asset-controller"],"summary":"Delete asset (deleteAsset)","description":"Deletes the asset and all the relations (from and to the asset). Referencing non-existing asset Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteAsset","parameters":[{"name":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/asset/types":{"get":{"tags":["asset-controller"],"summary":"Get Asset Types (getAssetTypes)","description":"Deprecated. See 'getAssetProfileNames' API from Asset Profile Controller instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAssetTypes","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntitySubtype"}}}}}},"deprecated":true}},"/api/asset/info/{assetId}":{"get":{"tags":["asset-controller"],"summary":"Get Asset Info (getAssetInfoById)","description":"Fetch the Asset Info object based on the provided Asset Id. If the user has the authority of 'Tenant Administrator', the server checks that the asset is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the asset is assigned to the same customer. Asset Info is an extension of the default Asset object that contains information about the assigned customer name. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAssetInfoById","parameters":[{"name":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetInfo"}}}}}}},"/api/apiKeys/{userId}":{"get":{"tags":["api-key-controller"],"summary":"Get User Api Keys (getUserApiKeys)","description":"Returns a page of api keys owned by user. 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 any authorized user. ","operationId":"getUserApiKeys","parameters":[{"name":"userId","in":"path","description":"A string value representing the user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"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 description.","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","expirationTime","description","enabled"]}},{"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/PageDataApiKeyInfo"}}}}}}},"/api/alarms":{"get":{"tags":["alarm-controller"],"summary":"Get All Alarms (getAllAlarms)","description":"Returns a page of alarms that belongs to the current user owner. If the user has the authority of 'Tenant Administrator', the server returns alarms that belongs to the tenant of current user. If the user has the authority of 'Customer User', the server returns alarms that belongs to the customer of current user. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. 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":"getAllAlarms","parameters":[{"name":"searchStatus","in":"query","description":"A string value representing one of the AlarmSearchStatus enumeration value","required":false,"schema":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}},{"name":"status","in":"query","description":"A string value representing one of the AlarmStatus enumeration value","required":false,"schema":{"type":"string","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"]}},{"name":"assigneeId","in":"query","description":"A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on of next alarm fields: type, severity or status","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","startTs","endTs","type","ackTs","clearTs","severity","status"]}},{"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":"The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"fetchOriginator","in":"query","description":"A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object  field: 'originatorName' or will returns as null.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAlarmInfo"}}}}}}},"/api/alarm/{entityType}/{entityId}":{"get":{"tags":["alarm-controller"],"summary":"Get Alarms (getAlarms)","description":"Returns a page of alarms for the selected entity. Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error. 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":"getAlarms","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"searchStatus","in":"query","description":"A string value representing one of the AlarmSearchStatus enumeration value","required":false,"schema":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}},{"name":"status","in":"query","description":"A string value representing one of the AlarmStatus enumeration value","required":false,"schema":{"type":"string","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"]}},{"name":"assigneeId","in":"query","description":"A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Maximum amount of entities in a one page","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"page","in":"query","description":"Sequence number of page starting from 0","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"textSearch","in":"query","description":"The case insensitive 'substring' filter based on of next alarm fields: type, severity or status","required":false,"schema":{"type":"string"}},{"name":"sortProperty","in":"query","description":"Property of entity to sort by","required":false,"schema":{"type":"string","enum":["createdTime","startTs","endTs","type","ackTs","clearTs","severity","status"]}},{"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":"The start timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"The end timestamp in milliseconds of the search time range over the Alarm class field: 'createdTime'.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"fetchOriginator","in":"query","description":"A boolean value to specify if the alarm originator name will be filled in the AlarmInfo object  field: 'originatorName' or will returns as null.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDataAlarmInfo"}}}}}}},"/api/alarm/{alarmId}":{"get":{"tags":["alarm-controller"],"summary":"Get Alarm (getAlarmById)","description":"Fetch the Alarm object based on the provided Alarm Id. If the user has the authority of 'Tenant Administrator', the server checks that the originator of alarm is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the originator of alarm belongs to the customer. ","operationId":"getAlarmById","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alarm"}}}}}},"delete":{"tags":["alarm-controller"],"summary":"Delete Alarm (deleteAlarm)","description":"Deletes the Alarm. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteAlarm","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/alarm/types":{"get":{"tags":["alarm-controller"],"summary":"Get Alarm Types (getAlarmTypes)","description":"Returns a set of unique alarm types based on alarms that are either owned by the tenant or assigned to the customer which user is performing the request.","operationId":"getAlarmTypes","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 of next alarm fields: type, severity or status","required":false,"schema":{"type":"string"}},{"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/PageDataEntitySubtype"}}}}}}},"/api/alarm/info/{alarmId}":{"get":{"tags":["alarm-controller"],"summary":"Get Alarm Info (getAlarmInfoById)","description":"Fetch the Alarm Info object based on the provided Alarm Id. If the user has the authority of 'Tenant Administrator', the server checks that the originator of alarm is owned by the same tenant. If the user has the authority of 'Customer User', the server checks that the originator of alarm belongs to the customer. Alarm Info is an extension of the default Alarm object that also contains name of the alarm originator.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getAlarmInfoById","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlarmInfo"}}}}}}},"/api/alarm/highestSeverity/{entityType}/{entityId}":{"get":{"tags":["alarm-controller"],"summary":"Get Highest Alarm Severity (getHighestAlarmSeverity)","description":"Search the alarms by originator ('entityType' and entityId') and optional 'status' or 'searchStatus' filters and returns the highest AlarmSeverity(CRITICAL, MAJOR, MINOR, WARNING or INDETERMINATE). Specifying both parameters 'searchStatus' and 'status' at the same time will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"getHighestAlarmSeverity","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"searchStatus","in":"query","description":"A string value representing one of the AlarmSearchStatus enumeration value","required":false,"schema":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}},{"name":"status","in":"query","description":"A string value representing one of the AlarmStatus enumeration value","required":false,"schema":{"type":"string","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"]}},{"name":"assigneeId","in":"query","description":"A string value representing the assignee user id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]}}}}}}},"/api/ai/model/{modelUuid}":{"get":{"tags":["ai-model-controller"],"summary":"Get AI model by ID (getAiModelById)","description":"Fetches an AI model record by its `id`.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"getAiModelById","parameters":[{"name":"modelUuid","in":"path","description":"ID of the AI model record","required":true,"schema":{"type":"string","format":"uuid"},"example":"de7900d4-30e2-11f0-9cd2-0242ac120002"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiModel"}}}}}},"delete":{"tags":["ai-model-controller"],"summary":"Delete AI model by ID (deleteAiModelById)","description":"Deletes the AI model record by its `id`. If a record with the specified `id` exists, the record is deleted and the endpoint returns `true`. If no such record exists, the endpoint returns `false`.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"deleteAiModelById","parameters":[{"name":"modelUuid","in":"path","description":"ID of the AI model record","required":true,"schema":{"type":"string","format":"uuid"},"example":"de7900d4-30e2-11f0-9cd2-0242ac120002"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/admin/updates":{"get":{"tags":["admin-controller"],"summary":"Check for new Platform Releases (checkUpdates)","description":"Check notifications about new platform releases. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"checkUpdates","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMessage"}}}}}}},"/api/admin/systemInfo":{"get":{"tags":["admin-controller"],"summary":"Get system info (getSystemInfo)","description":"Get main information about system. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getSystemInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemInfo"}}}}}}},"/api/admin/settings/{key}":{"get":{"tags":["admin-controller"],"summary":"Get the Administration Settings object using key (getAdminSettings)","description":"Get the Administration Settings object using specified string key. Referencing non-existing key will cause an error.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getAdminSettings","parameters":[{"name":"key","in":"path","description":"A string value of the key (e.g. 'general' or 'mail').","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettings"}}}}}}},"/api/admin/repositorySettings/info":{"get":{"tags":["admin-controller"],"operationId":"getRepositorySettingsInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepositorySettingsInfo"}}}}}}},"/api/admin/repositorySettings/exists":{"get":{"tags":["admin-controller"],"summary":"Check repository settings exists (repositorySettingsExists)","description":"Check whether the repository settings exists. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"repositorySettingsExists","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/admin/mail/oauth2/loginProcessingUrl":{"get":{"tags":["admin-controller"],"summary":"Get OAuth2 log in processing URL (getMailProcessingUrl)","description":"Returns the URL enclosed in double quotes. After successful authentication with OAuth2 provider and user consent for requested scope, it makes a redirect to this path so that the platform can do further log in processing and generating access tokens. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getMailProcessingUrl","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/admin/mail/oauth2/code":{"get":{"tags":["admin-controller"],"operationId":"codeProcessingUrl","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/admin/mail/oauth2/authorize":{"get":{"tags":["admin-controller"],"summary":"Redirect user to mail provider login page. ","description":"After user logged in and provided accessprovider sends authorization code to specified redirect uri.)","operationId":"getAuthorizationUrl","responses":{"200":{"description":"OK","content":{"application/text":{"schema":{"type":"string"}}}}}}},"/api/admin/featuresInfo":{"get":{"tags":["admin-controller"],"summary":"Get features info (getFeaturesInfo)","description":"Get information about enabled/disabled features. \n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"getFeaturesInfo","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturesInfo"}}}}}}},"/api/admin/autoCommitSettings/exists":{"get":{"tags":["admin-controller"],"summary":"Check auto commit settings exists (autoCommitSettingsExists)","description":"Check whether the auto commit settings exists. \n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"autoCommitSettingsExists","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/2fa/providers":{"get":{"tags":["two-factor-auth-config-controller"],"summary":"Get available 2FA providers (getAvailableTwoFaProviders)","description":"Get the list of provider types available for user to use (the ones configured by tenant or sysadmin).\nExample of response:\n```\n[\n  \"TOTP\",\n  \"EMAIL\",\n  \"SMS\"\n]\n```\n\nAvailable for any authorized user. ","operationId":"getAvailableTwoFaProviders_1","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]}}}}}}}},"/api/2fa/account/settings":{"get":{"tags":["two-factor-auth-config-controller"],"summary":"Get account 2FA settings (getAccountTwoFaSettings)","description":"Get user's account 2FA configuration. Configuration contains configs for different 2FA providers.\n\nExample:\n```\n{\n  \"configs\": {\n    \"EMAIL\": {\n      \"providerType\": \"EMAIL\",\n      \"useByDefault\": true,\n      \"email\": \"tenant@thingsboard.org\"\n    },\n    \"TOTP\": {\n      \"providerType\": \"TOTP\",\n      \"useByDefault\": false,\n      \"authUrl\": \"otpauth://totp/TB%202FA:tenant@thingsboard.org?issuer=TB+2FA&secret=P6Z2TLYTASOGP6LCJZAD24ETT5DACNNX\"\n    },\n    \"SMS\": {\n      \"providerType\": \"SMS\",\n      \"useByDefault\": false,\n      \"phoneNumber\": \"+380501253652\"\n    }\n  }\n}\n```\n\nAvailable for any authorized user. ","operationId":"getAccountTwoFaSettings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTwoFaSettings"}}}}}}},"/.well-known/assetlinks.json":{"get":{"tags":["qr-code-settings-controller"],"summary":"Get associated android applications (getAssetLinks)","operationId":"getAssetLinks","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/.well-known/apple-app-site-association":{"get":{"tags":["qr-code-settings-controller"],"summary":"Get associated ios applications (getAppleAppSiteAssociation)","operationId":"getAppleAppSiteAssociation","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/user/settings/{type}/{paths}":{"delete":{"tags":["user-controller"],"summary":"Delete user settings (deleteUserSettings)","description":"Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter","operationId":"deleteUserSettings","parameters":[{"name":"paths","in":"path","description":"paths","required":true,"schema":{"type":"string"}},{"name":"type","in":"path","description":"Settings type, case insensitive, one of: \"general\", \"quick_links\", \"doc_links\" or \"dashboards\".","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/settings/{paths}":{"delete":{"tags":["user-controller"],"summary":"Delete user settings (deleteUserSettings)","description":"Delete user settings by specifying list of json element xpaths. \n Example: to delete B and C element in { \"A\": {\"B\": 5}, \"C\": 15} send A.B,C in jsonPaths request parameter","operationId":"deleteUserSettings_1","parameters":[{"name":"paths","in":"path","description":"paths","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/signup/tenantAccount":{"delete":{"tags":["sign-up-controller"],"operationId":"deleteTenantAccount","responses":{"200":{"description":"OK"}}}},"/api/plugins/telemetry/{entityType}/{entityId}/timeseries/delete":{"delete":{"tags":["telemetry-controller"],"summary":"Delete entity time series data (deleteEntityTimeseries)","description":"Delete time series for selected entity based on entity id, entity type and keys. Use 'deleteAllDataForKeys' to delete all time series data. Use 'startTs' and 'endTs' to specify time-range instead.  Use 'deleteLatest' to delete latest value (stored in separate table for performance) if the value's timestamp matches the time-range.  Use 'rewriteLatestIfDeleted' to rewrite latest value (stored in separate table for performance) if the value's timestamp matches the time-range and 'deleteLatest' param is true. The replacement value will be fetched from the 'time series' table, and its timestamp will be the most recent one before the defined time-range. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteEntityTimeseries","parameters":[{"name":"entityType","in":"path","description":"A string value representing the entity type. For example, 'DEVICE'","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"path","description":"A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"keys","in":"query","description":"A string value representing the comma-separated list of telemetry keys. If keys are not selected, the result will return all latest time series. For example, 'temperature,humidity'. If telemetry keys contain comma, duplicate 'key' parameter for each key, for example '?key=my,key&key=my,second,key","required":false,"schema":{"type":"string"}},{"name":"deleteAllDataForKeys","in":"query","description":"A boolean value to specify if should be deleted all data for selected keys or only data that are in the selected time range.","required":false,"schema":{"type":"boolean","default":false}},{"name":"startTs","in":"query","description":"A long value representing the start timestamp of removal time range in milliseconds.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTs","in":"query","description":"A long value representing the end timestamp of removal time range in milliseconds.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"deleteLatest","in":"query","description":"If the parameter is set to true, the latest telemetry can be removed, otherwise, in case that parameter is set to false the latest value will not removed.","required":false,"schema":{"type":"boolean","default":true}},{"name":"rewriteLatestIfDeleted","in":"query","description":"If the parameter is set to true, the latest telemetry will be rewritten in case that current latest value was removed, otherwise, in case that parameter is set to false the new latest value will not set.","required":false,"schema":{"type":"boolean","default":false}},{"name":"params","in":"query","required":true,"schema":{"$ref":"#/components/schemas/MultiValueMapStringString"}}],"responses":{"200":{"description":"Time series for the selected keys in the request was removed. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED'.","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Platform returns a bad request in case if keys list is empty or start and end timestamp values is empty when deleteAllDataForKeys is set to false.","content":{"application/json":{"schema":{"type":"string"}}}},"401":{"description":"User is not authorized to delete entity time series for selected entity. Most likely, User belongs to different Customer or Tenant.","content":{"application/json":{"schema":{"type":"string"}}}},"500":{"description":"The exception was thrown during processing the request. Platform creates an audit log event about entity time series removal with action type 'TIMESERIES_DELETED' that includes an error stacktrace.","content":{"application/json":{"schema":{"type":"string"}}}}}}},"/api/oauth2/config/template/{clientRegistrationTemplateId}":{"delete":{"tags":["o-auth-2-config-template-controller"],"summary":"Delete OAuth2 client registration template by id (deleteClientRegistrationTemplate)\n\nAvailable for users with 'SYS_ADMIN' authority.","description":"Client registration template is OAuth2 provider configuration template with default settings for registering new OAuth2 clients","operationId":"deleteClientRegistrationTemplate","parameters":[{"name":"clientRegistrationTemplateId","in":"path","description":"String representation of client registration template id to delete","required":true,"schema":{"type":"string"},"example":"139b1f81-2f5d-11ec-9dbe-9b627e1a88f4"}],"responses":{"200":{"description":"OK"}}}},"/api/notification/{id}":{"delete":{"tags":["notification-controller"],"summary":"Delete notification (deleteNotification)","description":"Deletes notification by its id.\n\nAvailable for any authorized user. ","operationId":"deleteNotification","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/mobile/bundle/{id}":{"delete":{"tags":["mobile-app-bundle-controller"],"summary":"Delete Mobile App Bundle by ID (deleteMobileAppBundle)","description":"Deletes Mobile App Bundle by ID. Referencing non-existing mobile app bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"deleteMobileAppBundle","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/domain/{id}":{"delete":{"tags":["domain-controller"],"summary":"Delete Domain by ID (deleteDomain)","description":"Deletes Domain by ID. Referencing non-existing domain Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' authority.","operationId":"deleteDomain","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/customer/entityView/{entityViewId}":{"delete":{"tags":["entity-view-controller"],"summary":"Unassign Entity View from customer (unassignEntityViewFromCustomer)","description":"Clears assignment of the Entity View to customer. Customer will not be able to query Entity View afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignEntityViewFromCustomer","parameters":[{"name":"entityViewId","in":"path","description":"A string value representing the entity view id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityView"}}}}}}},"/api/customer/edge/{edgeId}":{"delete":{"tags":["edge-controller"],"summary":"Unassign edge from customer (unassignEdgeFromCustomer)","description":"Clears assignment of the edge to customer. Customer will not be able to query edge afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignEdgeFromCustomer","parameters":[{"name":"edgeId","in":"path","description":"A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Edge"}}}}}}},"/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.\n\nAvailable 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"}}}}}}},"/api/customer/asset/{assetId}":{"delete":{"tags":["asset-controller"],"summary":"Unassign asset from customer (unassignAssetFromCustomer)","description":"Clears assignment of the asset to customer. Customer will not be able to query asset afterwards.\n\nAvailable for users with 'TENANT_ADMIN' authority.","operationId":"unassignAssetFromCustomer","parameters":[{"name":"assetId","in":"path","description":"A string value representing the asset id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}}}}},"/api/apiKey/{id}":{"delete":{"tags":["api-key-controller"],"summary":"Delete API key by ID (deleteApiKey)","description":"Deletes the API key. Referencing non-existing ApiKey Id will cause an error.\n\nAvailable for any authorized user. ","operationId":"deleteApiKey","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}},"/api/alarm/{alarmId}/comment/{commentId}":{"delete":{"tags":["alarm-comment-controller"],"summary":"Delete Alarm comment (deleteAlarmComment)","description":"Deletes the Alarm comment. Referencing non-existing Alarm comment Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"deleteAlarmComment","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","description":"A string value representing the alarm comment id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/alarm/{alarmId}/assign":{"delete":{"tags":["alarm-controller"],"summary":"Unassign Alarm (unassignAlarm)","description":"Unassign the Alarm. Once unassigned, the 'assign_ts' field will be set to current timestamp and special rule chain event 'ALARM_UNASSIGNED' will be generated. Referencing non-existing Alarm Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.","operationId":"unassignAlarm","parameters":[{"name":"alarmId","in":"path","description":"A string value representing the alarm id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alarm"}}}}}}},"/error":{"get":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"put":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_2","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_1","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"delete":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_3","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"options":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_6","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"head":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_5","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"patch":{"tags":["thingsboard-error-response-handler"],"operationId":"handleError_4","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"JsonNode":{"description":"A value representing the any type (object or primitive)","examples":[{}]},"LoginRequest":{"properties":{"username":{"type":"string","description":"User email","example":"tenant@thingsboard.org"},"password":{"type":"string","description":"User password","example":"tenant"}},"required":["password","username"]},"LoginResponse":{"properties":{"token":{"type":"string","description":"JWT token","example":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIi..."},"refreshToken":{"type":"string","description":"Refresh token","example":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIi..."}},"required":["refreshToken","token"]},"ThingsboardErrorResponse":{"properties":{"status":{"type":"integer","format":"int32","description":"HTTP Response Status Code","example":401,"readOnly":true},"message":{"type":"string","description":"Error message","example":"Authentication failed","readOnly":true},"errorCode":{"type":"integer","format":"int32","description":"Platform error code:\n* `2` - General error (HTTP: 500 - Internal Server Error)\n\n* `10` - Authentication failed (HTTP: 401 - Unauthorized)\n\n* `11` - JWT token expired (HTTP: 401 - Unauthorized)\n\n* `15` - Credentials expired (HTTP: 401 - Unauthorized)\n\n* `20` - Permission denied (HTTP: 403 - Forbidden)\n\n* `30` - Invalid arguments (HTTP: 400 - Bad Request)\n\n* `31` - Bad request params (HTTP: 400 - Bad Request)\n\n* `32` - Item not found (HTTP: 404 - Not Found)\n\n* `33` - Too many requests (HTTP: 429 - Too Many Requests)\n\n* `34` - Too many updates (Too many updates over Websocket session)\n\n* `40` - Subscription violation (HTTP: 403 - Forbidden)\n\n* `41` - Entities limit exceeded (HTTP: 403 - Forbidden)","example":10,"readOnly":true},"timestamp":{"type":"integer","format":"int64","description":"Timestamp","readOnly":true}}},"ThingsboardCredentialsExpiredResponse":{"properties":{"status":{"type":"integer","format":"int32","description":"HTTP Response Status Code","example":401,"readOnly":true},"message":{"type":"string","description":"Error message","example":"Authentication failed","readOnly":true},"errorCode":{"type":"integer","format":"int32","description":"Platform error code:\n* `2` - General error (HTTP: 500 - Internal Server Error)\n\n* `10` - Authentication failed (HTTP: 401 - Unauthorized)\n\n* `11` - JWT token expired (HTTP: 401 - Unauthorized)\n\n* `15` - Credentials expired (HTTP: 401 - Unauthorized)\n\n* `20` - Permission denied (HTTP: 403 - Forbidden)\n\n* `30` - Invalid arguments (HTTP: 400 - Bad Request)\n\n* `31` - Bad request params (HTTP: 400 - Bad Request)\n\n* `32` - Item not found (HTTP: 404 - Not Found)\n\n* `33` - Too many requests (HTTP: 429 - Too Many Requests)\n\n* `34` - Too many updates (Too many updates over Websocket session)\n\n* `40` - Subscription violation (HTTP: 403 - Forbidden)\n\n* `41` - Entities limit exceeded (HTTP: 403 - Forbidden)","example":10,"readOnly":true},"timestamp":{"type":"integer","format":"int64","description":"Timestamp","readOnly":true},"resetToken":{"type":"string","description":"Password reset token","readOnly":true}}},"TbResourceId":{"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":["TB_RESOURCE"],"example":"TB_RESOURCE"}},"required":["entityType","id"]},"TbResourceInfo":{"type":"object","description":"A JSON value representing the Resource Info.","properties":{"id":{"$ref":"#/components/schemas/TbResourceId","description":"JSON object with the Resource Id. Specify this field to update the Resource. Referencing non-existing Resource Id will cause error. Omit this field to create new Resource."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the resource creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the resource can't be changed.","readOnly":true},"title":{"type":"string","description":"Resource title.","example":"BinaryAppDataContainer id=19 v1.0"},"resourceType":{"type":"string","description":"Resource type.","enum":["LWM2M_MODEL","JKS","PKCS_12","JS_MODULE","IMAGE","DASHBOARD","GENERAL"],"example":"LWM2M_MODEL","readOnly":true},"resourceSubType":{"type":"string","description":"Resource sub type.","enum":["IMAGE","SCADA_SYMBOL","EXTENSION","MODULE"],"example":"IOT_SVG","readOnly":true},"resourceKey":{"type":"string","description":"Resource key.","example":"19_1.0","readOnly":true},"publicResourceKey":{"type":"string"},"etag":{"type":"string","description":"Resource etag.","example":"33a64df551425fcc55e4d42a148795d9f25f89d4","readOnly":true},"fileName":{"type":"string","description":"Resource file name.","example":"19.xml","readOnly":true},"descriptor":{"$ref":"#/components/schemas/JsonNode"},"name":{"type":"string","readOnly":true},"public":{"type":"boolean"},"link":{"type":"string","readOnly":true},"publicLink":{"type":"string","readOnly":true}}},"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"]},"ResourceExportData":{"type":"object","properties":{"link":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","enum":["LWM2M_MODEL","JKS","PKCS_12","JS_MODULE","IMAGE","DASHBOARD","GENERAL"]},"subType":{"type":"string","enum":["IMAGE","SCADA_SYMBOL","EXTENSION","MODULE"]},"resourceKey":{"type":"string"},"fileName":{"type":"string"},"publicResourceKey":{"type":"string"},"isPublic":{"type":"boolean","writeOnly":true},"mediaType":{"type":"string"},"data":{"type":"string"},"public":{"type":"boolean"}}},"ApiKeyId":{"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":["API_KEY"],"example":"API_KEY"}},"required":["entityType","id"]},"ApiKeyInfo":{"type":"object","description":"A JSON value representing the Api Key token.","properties":{"id":{"$ref":"#/components/schemas/ApiKeyId","description":"JSON object with the API Key Id. Specify this field to update the API Key. Referencing non-existing API Key Id will cause error. Omit this field to create new API Key."},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the API key cannot be changed.","readOnly":true},"userId":{"$ref":"#/components/schemas/UserId","description":"JSON object with User Id. User Id of the API key cannot be changed."},"expirationTime":{"type":"integer","format":"int64","description":"Expiration time of the API key."},"description":{"type":"string","description":"API Key description.","example":"API Key description","minLength":1},"enabled":{"type":"boolean","description":"Enabled/disabled API key.","example":true},"expired":{"type":"boolean","description":"Indicates if the API key is expired based on current time. Returns false if expirationTime is 0 (no expiry).","example":false,"readOnly":true}},"required":["description"]},"UserId":{"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":["USER"],"example":"USER"}},"required":["entityType","id"]},"TwoFaAccountConfigUpdateRequest":{"type":"object","properties":{"useByDefault":{"type":"boolean"}}},"AccountTwoFaSettings":{"type":"object","properties":{"configs":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/BackupCodeTwoFaAccountConfig"},{"$ref":"#/components/schemas/EmailTwoFaAccountConfig"},{"$ref":"#/components/schemas/SmsTwoFaAccountConfig"},{"$ref":"#/components/schemas/TotpTwoFaAccountConfig"}]}}}},"BackupCodeTwoFaAccountConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaAccountConfig"},{"type":"object","properties":{"codes":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"codesLeft":{"type":"integer","format":"int32"}}}],"required":["codes"]},"EmailTwoFaAccountConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaAccountConfig"},{"type":"object","properties":{"email":{"type":"string","minLength":1}}}],"required":["email"]},"SmsTwoFaAccountConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaAccountConfig"},{"type":"object","properties":{"phoneNumber":{"type":"string","minLength":1,"pattern":"^\\+[1-9]\\d{1,14}$"}}}],"required":["phoneNumber"]},"TotpTwoFaAccountConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaAccountConfig"},{"type":"object","properties":{"authUrl":{"type":"string","minLength":1,"pattern":"otpauth://totp/(\\S+?):(\\S+?)\\?issuer=(\\S+?)&secret=(\\w+?)"}}}],"required":["authUrl"]},"TwoFaAccountConfig":{"type":"object","discriminator":{"propertyName":"providerType"},"properties":{"useByDefault":{"type":"boolean"},"providerType":{"type":"string"}},"required":["providerType"]},"WidgetsBundle":{"type":"object","description":"A JSON value representing the Widget Bundle.","properties":{"id":{"$ref":"#/components/schemas/WidgetsBundleId","description":"JSON object with the Widget Bundle Id. Specify this field to update the Widget Bundle. Referencing non-existing Widget Bundle Id will cause error. Omit this field to create new Widget Bundle."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Widget Bundle creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"alias":{"type":"string","description":"Unique alias that is used in widget types as a reference widget bundle","readOnly":true},"title":{"type":"string","description":"Title used in search and UI","readOnly":true},"image":{"type":"string","description":"Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled.","readOnly":true},"scada":{"type":"boolean","description":"Whether widgets bundle contains SCADA symbol widget types.","readOnly":true},"description":{"type":"string","description":"Description","readOnly":true},"order":{"type":"integer","format":"int32","description":"Order","readOnly":true},"version":{"type":"integer","format":"int64"},"name":{"type":"string","description":"Same as title of the Widget Bundle. Read-only field. Update the 'title' to change the 'name' of the Widget Bundle.","readOnly":true}}},"WidgetsBundleId":{"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":["WIDGETS_BUNDLE"],"example":"WIDGETS_BUNDLE"}},"required":["entityType","id"]},"WidgetTypeDetails":{"type":"object","description":"A JSON value representing the Widget Type Details.","properties":{"fqn":{"type":"string","description":"Unique FQN that is used in dashboards as a reference widget type","readOnly":true},"name":{"type":"string","description":"Widget name used in search and UI","readOnly":true},"deprecated":{"type":"boolean","description":"Whether widget type is deprecated.","example":true},"image":{"type":"string","description":"Relative or external image URL. Replaced with image data URL (Base64) in case of relative URL and 'inlineImages' option enabled."},"description":{"type":"string","description":"Description of the widget"},"descriptor":{"$ref":"#/components/schemas/JsonNode","description":"Complex JSON object that describes the widget type","readOnly":true},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceExportData"}},"id":{"$ref":"#/components/schemas/WidgetTypeId","description":"JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Widget Type creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"scada":{"type":"boolean","description":"Whether widget type is SCADA symbol.","example":true},"version":{"type":"integer","format":"int64"},"tags":{"type":"array","description":"Tags of the widget type","items":{"type":"string"}}}},"WidgetTypeId":{"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":["WIDGET_TYPE"],"example":"WIDGET_TYPE"}},"required":["entityType","id"]},"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"]},"EntityRelation":{"type":"object","description":"A JSON value representing the relation.","properties":{"from":{"$ref":"#/components/schemas/EntityId","description":"JSON object with [from] Entity Id."},"to":{"$ref":"#/components/schemas/EntityId","description":"JSON object with [to] Entity Id."},"type":{"type":"string","description":"String value of relation type.","example":"Contains","minLength":1},"typeGroup":{"type":"string","description":"Represents the type group of the relation.","enum":["COMMON","DASHBOARD","RULE_CHAIN","RULE_NODE","EDGE","EDGE_AUTO_ASSIGN_RULE_CHAIN"],"example":"COMMON"},"version":{"type":"integer","format":"int64"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the relation"}},"required":["from","to","type","typeGroup"]},"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"]},"User":{"type":"object","description":"A JSON value representing the User.","properties":{"id":{"$ref":"#/components/schemas/UserId","description":"JSON object with the User Id. Specify this field to update the device. Referencing non-existing User Id will cause error. Omit this field to create new customer."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the user creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with the Tenant Id.","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with the Customer Id.","readOnly":true},"email":{"type":"string","description":"Email of the user","example":"user@example.com"},"authority":{"type":"string","description":"Authority","enum":["SYS_ADMIN","TENANT_ADMIN","CUSTOMER_USER","REFRESH_TOKEN","PRE_VERIFICATION_TOKEN","MFA_CONFIGURATION_TOKEN"],"example":"SYS_ADMIN, TENANT_ADMIN or CUSTOMER_USER"},"firstName":{"type":"string","description":"First name of the user","example":"John"},"lastName":{"type":"string","description":"Last name of the user","example":"Doe"},"phone":{"type":"string","description":"Phone number of the user","example":38012345123},"version":{"type":"integer","format":"int64"},"name":{"type":"string","description":"Duplicates the email of the user, readonly","example":"user@example.com","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the user"}},"required":["authority","email"]},"MobileSessionInfo":{"type":"object","properties":{"fcmTokenTimestamp":{"type":"integer","format":"int64"}}},"TrendzSettings":{"type":"object","properties":{"enabled":{"type":"boolean"},"baseUrl":{"type":"string"},"apiKey":{"type":"string"}}},"Tenant":{"type":"object","description":"A JSON value representing the tenant.","properties":{"id":{"$ref":"#/components/schemas/TenantId","description":"JSON object with the tenant Id. Specify this field to update the tenant. Referencing non-existing tenant Id will cause error. Omit this field to create new tenant."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the tenant creation, in milliseconds","example":1609459200000,"readOnly":true},"country":{"type":"string","description":"Country","example":"US"},"state":{"type":"string","description":"State","example":"NY"},"city":{"type":"string","description":"City","example":"New York"},"address":{"type":"string","description":"Address Line 1","example":42},"address2":{"type":"string","description":"Address Line 2"},"zip":{"type":"string","description":"Zip code","example":10004},"phone":{"type":"string","description":"Phone number","example":"+1(415)777-7777"},"email":{"type":"string","description":"Email","example":"example@company.com"},"title":{"type":"string","description":"Title of the tenant","example":"Company A"},"region":{"type":"string","description":"Geo region of the tenant","example":"North America"},"tenantProfileId":{"$ref":"#/components/schemas/TenantProfileId","description":"JSON object with Tenant Profile Id"},"version":{"type":"integer","format":"int64"},"name":{"type":"string","description":"Name of the tenant. Read-only, duplicated from title for backward compatibility","example":"Company A","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the device"}},"required":["title"]},"TenantProfileId":{"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_PROFILE"],"example":"TENANT_PROFILE"}},"required":["entityType","id"]},"DefaultTenantProfileConfiguration":{"allOf":[{"$ref":"#/components/schemas/TenantProfileConfiguration"},{"type":"object","properties":{"maxDevices":{"type":"integer","format":"int64"},"maxAssets":{"type":"integer","format":"int64"},"maxCustomers":{"type":"integer","format":"int64"},"maxUsers":{"type":"integer","format":"int64"},"maxDashboards":{"type":"integer","format":"int64"},"maxRuleChains":{"type":"integer","format":"int64"},"maxEdges":{"type":"integer","format":"int64"},"maxResourcesInBytes":{"type":"integer","format":"int64"},"maxOtaPackagesInBytes":{"type":"integer","format":"int64"},"maxResourceSize":{"type":"integer","format":"int64"},"transportTenantMsgRateLimit":{"type":"string","example":"1000:1,20000:60"},"transportTenantTelemetryMsgRateLimit":{"type":"string","example":"1000:1,20000:60"},"transportTenantTelemetryDataPointsRateLimit":{"type":"string","example":"1000:1,20000:60"},"transportDeviceMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportDeviceTelemetryMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportDeviceTelemetryDataPointsRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayTelemetryMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayTelemetryDataPointsRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayDeviceMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayDeviceTelemetryMsgRateLimit":{"type":"string","example":"20:1,600:60"},"transportGatewayDeviceTelemetryDataPointsRateLimit":{"type":"string","example":"20:1,600:60"},"tenantEntityExportRateLimit":{"type":"string","example":"20:1,600:60"},"tenantEntityImportRateLimit":{"type":"string","example":"20:1,600:60"},"tenantNotificationRequestsRateLimit":{"type":"string","example":"20:1,600:60"},"tenantNotificationRequestsPerRuleRateLimit":{"type":"string","example":"20:1,600:60"},"maxTransportMessages":{"type":"integer","format":"int64","example":10000000},"maxTransportDataPoints":{"type":"integer","format":"int64","example":10000000},"maxREExecutions":{"type":"integer","format":"int64","example":4000000},"maxJSExecutions":{"type":"integer","format":"int64","example":5000000},"maxTbelExecutions":{"type":"integer","format":"int64","example":5000000},"maxDPStorageDays":{"type":"integer","format":"int64","example":0},"maxRuleNodeExecutionsPerMessage":{"type":"integer","format":"int32","example":50},"maxDebugModeDurationMinutes":{"type":"integer","format":"int32","example":15},"maxEmails":{"type":"integer","format":"int64","example":0},"smsEnabled":{"type":"boolean","example":true},"maxSms":{"type":"integer","format":"int64","example":0},"maxCreatedAlarms":{"type":"integer","format":"int64","example":1000},"tenantServerRestLimitsConfiguration":{"type":"string"},"customerServerRestLimitsConfiguration":{"type":"string"},"maxWsSessionsPerTenant":{"type":"integer","format":"int32"},"maxWsSessionsPerCustomer":{"type":"integer","format":"int32"},"maxWsSessionsPerRegularUser":{"type":"integer","format":"int32"},"maxWsSessionsPerPublicUser":{"type":"integer","format":"int32"},"wsMsgQueueLimitPerSession":{"type":"integer","format":"int32"},"maxWsSubscriptionsPerTenant":{"type":"integer","format":"int64"},"maxWsSubscriptionsPerCustomer":{"type":"integer","format":"int64"},"maxWsSubscriptionsPerRegularUser":{"type":"integer","format":"int64"},"maxWsSubscriptionsPerPublicUser":{"type":"integer","format":"int64"},"wsUpdatesPerSessionRateLimit":{"type":"string"},"cassandraReadQueryTenantCoreRateLimits":{"type":"string"},"cassandraWriteQueryTenantCoreRateLimits":{"type":"string"},"cassandraReadQueryTenantRuleEngineRateLimits":{"type":"string"},"cassandraWriteQueryTenantRuleEngineRateLimits":{"type":"string"},"edgeEventRateLimits":{"type":"string"},"edgeEventRateLimitsPerEdge":{"type":"string"},"edgeUplinkMessagesRateLimits":{"type":"string"},"edgeUplinkMessagesRateLimitsPerEdge":{"type":"string"},"defaultStorageTtlDays":{"type":"integer","format":"int32"},"alarmsTtlDays":{"type":"integer","format":"int32"},"rpcTtlDays":{"type":"integer","format":"int32"},"queueStatsTtlDays":{"type":"integer","format":"int32"},"ruleEngineExceptionsTtlDays":{"type":"integer","format":"int32"},"warnThreshold":{"type":"number","format":"double"},"maxCalculatedFieldsPerEntity":{"type":"integer","format":"int64","example":5},"maxArgumentsPerCF":{"type":"integer","format":"int64","example":10},"minAllowedScheduledUpdateIntervalInSecForCF":{"type":"integer","format":"int32","example":10},"maxRelationLevelPerCfArgument":{"type":"integer","format":"int32","example":2},"maxRelatedEntitiesToReturnPerCfArgument":{"type":"integer","format":"int32","example":100},"maxDataPointsPerRollingArg":{"type":"integer","format":"int64","example":1000},"maxStateSizeInKBytes":{"type":"integer","format":"int64","example":32},"maxSingleValueArgumentSizeInKBytes":{"type":"integer","format":"int64","example":2},"minAllowedDeduplicationIntervalInSecForCF":{"type":"integer","format":"int64","example":10},"minAllowedAggregationIntervalInSecForCF":{"type":"integer","format":"int64","example":60},"intermediateAggregationIntervalInSecForCF":{"type":"integer","format":"int64","example":300},"cfReevaluationCheckInterval":{"type":"integer","format":"int64","example":60},"alarmsReevaluationInterval":{"type":"integer","format":"int64","example":60}}}]},"ProcessingStrategy":{"type":"object","properties":{"type":{"type":"string","enum":["SKIP_ALL_FAILURES","SKIP_ALL_FAILURES_AND_TIMED_OUT","RETRY_ALL","RETRY_FAILED","RETRY_TIMED_OUT","RETRY_FAILED_AND_TIMED_OUT"]},"retries":{"type":"integer","format":"int32"},"failurePercentage":{"type":"number","format":"double"},"pauseBetweenRetries":{"type":"integer","format":"int64"},"maxPauseBetweenRetries":{"type":"integer","format":"int64"}}},"SubmitStrategy":{"type":"object","properties":{"type":{"type":"string","enum":["BURST","BATCH","SEQUENTIAL_BY_ORIGINATOR","SEQUENTIAL_BY_TENANT","SEQUENTIAL"]},"batchSize":{"type":"integer","format":"int32"}}},"TenantProfile":{"type":"object","description":"A JSON value representing the tenant profile.","properties":{"id":{"$ref":"#/components/schemas/TenantProfileId","description":"JSON object with the tenant profile Id. Specify this field to update the tenant profile. Referencing non-existing tenant profile Id will cause error. Omit this field to create new tenant profile."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the tenant profile creation, in milliseconds","example":1609459200000,"readOnly":true},"name":{"type":"string","description":"Name of the tenant profile","example":"High Priority Tenants"},"description":{"type":"string","description":"Description of the tenant profile","example":"Any text"},"isolatedTbRuleEngine":{"type":"boolean","description":"If enabled, will push all messages related to this tenant and processed by the rule engine into separate queue. Useful for complex microservices deployments, to isolate processing of the data for specific tenants","example":false},"profileData":{"$ref":"#/components/schemas/TenantProfileData"},"default":{"type":"boolean","description":"Default Tenant profile to be used.","example":false}}},"TenantProfileConfiguration":{"discriminator":{"propertyName":"type","mapping":{"DEFAULT":"#/components/schemas/DefaultTenantProfileConfiguration"}},"properties":{"type":{"type":"string"}},"required":["type"]},"TenantProfileData":{"type":"object","properties":{"configuration":{"description":"Complex JSON object that contains profile settings: max devices, max assets, rate limits, etc.","oneOf":[{"$ref":"#/components/schemas/DefaultTenantProfileConfiguration"}]},"queueConfiguration":{"type":"array","description":"JSON array of queue configuration per tenant profile","items":{"$ref":"#/components/schemas/TenantProfileQueueConfiguration"}}}},"TenantProfileQueueConfiguration":{"type":"object","properties":{"name":{"type":"string"},"topic":{"type":"string"},"pollInterval":{"type":"integer","format":"int32"},"partitions":{"type":"integer","format":"int32"},"consumerPerPartition":{"type":"boolean"},"packProcessingTimeout":{"type":"integer","format":"int64"},"submitStrategy":{"$ref":"#/components/schemas/SubmitStrategy"},"processingStrategy":{"$ref":"#/components/schemas/ProcessingStrategy"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}}},"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"}}}]},"DefaultDeviceConfiguration":{"allOf":[{"$ref":"#/components/schemas/DeviceConfiguration"}]},"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"]},"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"]},"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"]},"DeviceTransportConfiguration":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"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"}}}]},"MqttDeviceTransportConfiguration":{"allOf":[{"$ref":"#/components/schemas/DeviceTransportConfiguration"}]},"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"]},"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"}}}]},"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"]},"HomeDashboardInfo":{"type":"object","description":"A JSON object that represents home dashboard id and other parameters","properties":{"dashboardId":{"$ref":"#/components/schemas/DashboardId","description":"JSON object with the dashboard Id."},"hideDashboardToolbar":{"type":"boolean","description":"Hide dashboard toolbar flag. Useful for rendering dashboards on mobile."}}},"JwtPair":{"type":"object","description":"JWT Pair","properties":{"token":{"type":"string","description":"The JWT Access Token. Used to perform API calls.","example":"AAB254FF67D.."},"refreshToken":{"type":"string","description":"The JWT Refresh Token. Used to get new JWT Access Token if old one has expired.","example":"AAB254FF67D.."},"scope":{"type":"string","enum":["SYS_ADMIN","TENANT_ADMIN","CUSTOMER_USER","REFRESH_TOKEN","PRE_VERIFICATION_TOKEN","MFA_CONFIGURATION_TOKEN"]}}},"DebugSettings":{"type":"object","properties":{"failuresEnabled":{"type":"boolean","description":"Debug failures. ","example":false},"allEnabled":{"type":"boolean","description":"Debug All. Used as a trigger for updating debugAllUntil.","example":false},"allEnabledUntil":{"type":"integer","format":"int64","description":"Timestamp of the end time for the processing debug events."}}},"NodeConnectionInfo":{"type":"object","properties":{"fromIndex":{"type":"integer","format":"int32","description":"Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection."},"toIndex":{"type":"integer","format":"int32","description":"Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'to' part of the connection."},"type":{"type":"string","description":"Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'"}},"required":["fromIndex","toIndex","type"]},"RuleChain":{"type":"object","description":"A JSON value representing the rule chain.","properties":{"id":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with the Rule Chain Id. Specify this field to update the Rule Chain. Referencing non-existing Rule Chain Id will cause error. Omit this field to create new rule chain."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the rule chain creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"name":{"type":"string","description":"Rule Chain name","example":"Humidity data processing"},"type":{"type":"string","description":"Rule Chain type. 'EDGE' rule chains are processing messages on the edge devices only.","enum":["CORE","EDGE"],"example":"A4B72CCDFF33"},"firstRuleNodeId":{"$ref":"#/components/schemas/RuleNodeId","description":"JSON object with Rule Chain Id. Pointer to the first rule node that should receive all messages pushed to this rule chain."},"root":{"type":"boolean","description":"Indicates root rule chain. The root rule chain process messages from all devices and entities by default. User may configure default rule chain per device profile."},"debugMode":{"type":"boolean","description":"Reserved for future usage."},"version":{"type":"integer","format":"int64"},"configuration":{"$ref":"#/components/schemas/JsonNode"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}},"required":["name","tenantId"]},"RuleChainConnectionInfo":{"type":"object","properties":{"fromIndex":{"type":"integer","format":"int32","description":"Index of rule node in the 'nodes' array of the RuleChainMetaData. Indicates the 'from' part of the connection."},"targetRuleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with the Rule Chain Id."},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"JSON object with the additional information about the connection."},"type":{"type":"string","description":"Type of the relation. Typically indicated the result of processing by the 'from' rule node. For example, 'Success' or 'Failure'"}},"required":["additionalInfo","fromIndex","targetRuleChainId","type"]},"RuleChainData":{"type":"object","description":"A JSON value representing the rule chains.","properties":{"ruleChains":{"type":"array","description":"List of the Rule Chain objects.","items":{"$ref":"#/components/schemas/RuleChain"},"readOnly":true},"metadata":{"type":"array","description":"List of the Rule Chain metadata objects.","items":{"$ref":"#/components/schemas/RuleChainMetaData"},"readOnly":true}},"required":["metadata","ruleChains"]},"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"]},"RuleChainMetaData":{"type":"object","description":"A JSON value representing the rule chain metadata.","properties":{"ruleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with Rule Chain Id.","readOnly":true},"version":{"type":"integer","format":"int64","description":"Version of the Rule Chain"},"firstNodeIndex":{"type":"integer","format":"int32","description":"Index of the first rule node in the 'nodes' list"},"nodes":{"type":"array","description":"List of rule node JSON objects","items":{"$ref":"#/components/schemas/RuleNode"}},"connections":{"type":"array","description":"List of JSON objects that represent connections between rule nodes","items":{"$ref":"#/components/schemas/NodeConnectionInfo"}},"ruleChainConnections":{"type":"array","description":"List of JSON objects that represent connections between rule nodes and other rule chains.","items":{"$ref":"#/components/schemas/RuleChainConnectionInfo"}}},"required":["connections","firstNodeIndex","nodes","ruleChainConnections","ruleChainId"]},"RuleNode":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RuleNodeId","description":"JSON object with the Rule Node Id. Specify this field to update the Rule Node. Referencing non-existing Rule Node Id will cause error. Omit this field to create new rule node."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the rule node creation, in milliseconds","example":1609459200000,"readOnly":true},"ruleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with the Rule Chain Id. ","readOnly":true},"type":{"type":"string","description":"Full Java Class Name of the rule node implementation. ","example":"com.mycompany.iot.rule.engine.ProcessingNode"},"name":{"type":"string","description":"User defined name of the rule node. Used on UI and for logging. ","example":"Process sensor reading"},"debugMode":{"type":"boolean","deprecated":true,"writeOnly":true},"debugSettings":{"$ref":"#/components/schemas/DebugSettings","description":"Debug settings object."},"singletonMode":{"type":"boolean","description":"Enable/disable singleton mode. ","example":false},"queueName":{"type":"string","description":"Queue name. ","example":"Main"},"configurationVersion":{"type":"integer","format":"int32","description":"Version of rule node configuration. ","example":0},"configuration":{"$ref":"#/components/schemas/JsonNode","description":"JSON with the rule node configuration. Structure depends on the rule node implementation."},"externalId":{"$ref":"#/components/schemas/RuleNodeId"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the rule node. Contains 'layoutX' and 'layoutY' properties for visualization."}}},"RuleNodeId":{"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_NODE"],"example":"RULE_NODE"}},"required":["entityType","id"]},"RuleChainImportResult":{"type":"object","properties":{"ruleChainId":{"$ref":"#/components/schemas/RuleChainId"},"ruleChainName":{"type":"string"},"updated":{"type":"boolean"},"error":{"type":"string"}}},"DefaultRuleChainCreateRequest":{"type":"object","description":"A JSON value representing the request.","properties":{"name":{"type":"string","description":"Name of the new rule chain","example":"Root Rule Chain"}},"required":["name"]},"TbResource":{"type":"object","description":"A JSON value representing the Resource.","properties":{"id":{"$ref":"#/components/schemas/TbResourceId","description":"JSON object with the Resource Id. Specify this field to update the Resource. Referencing non-existing Resource Id will cause error. Omit this field to create new Resource."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the resource creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the resource can't be changed.","readOnly":true},"title":{"type":"string","description":"Resource title.","example":"BinaryAppDataContainer id=19 v1.0"},"resourceType":{"type":"string","description":"Resource type.","enum":["LWM2M_MODEL","JKS","PKCS_12","JS_MODULE","IMAGE","DASHBOARD","GENERAL"],"example":"LWM2M_MODEL","readOnly":true},"resourceSubType":{"type":"string","description":"Resource sub type.","enum":["IMAGE","SCADA_SYMBOL","EXTENSION","MODULE"],"example":"IOT_SVG","readOnly":true},"resourceKey":{"type":"string","description":"Resource key.","example":"19_1.0","readOnly":true},"publicResourceKey":{"type":"string"},"etag":{"type":"string","description":"Resource etag.","example":"33a64df551425fcc55e4d42a148795d9f25f89d4","readOnly":true},"fileName":{"type":"string","description":"Resource file name.","example":"19.xml","readOnly":true},"descriptor":{"$ref":"#/components/schemas/JsonNode"},"data":{"type":"string","description":"Resource data.","example":"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLQpGSUxFIElORk9STUFUSU9OCgpPTUEgUGVybWFuZW50IERvY3VtZW50CiAgIEZpbGU6IE9NQS1TVVAtTHdNMk1fQmluYXJ5QXBwRGF0YUNvbnRhaW5lci1WMV8wXzEtMjAxOTAyMjEtQQogICBUeXBlOiB4bWwKClB1YmxpYyBSZWFjaGFibGUgSW5mb3JtYXRpb24KICAgUGF0aDogaHR0cDovL3d3dy5vcGVubW9iaWxlYWxsaWFuY2Uub3JnL3RlY2gvcHJvZmlsZXMKICAgTmFtZTogTHdNMk1fQmluYXJ5QXBwRGF0YUNvbnRhaW5lci12MV8wXzEueG1sCgpOT1JNQVRJVkUgSU5GT1JNQVRJT04KCiAgSW5mb3JtYXRpb24gYWJvdXQgdGhpcyBmaWxlIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGF0ZXN0IHJldmlzaW9uIG9mCgogIE9NQS1UUy1MV00yTV9CaW5hcnlBcHBEYXRhQ29udGFpbmVyLVYxXzBfMQoKICBUaGlzIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5tb2JpbGVhbGxpYW5jZS5vcmcvCgogIFNlbmQgY29tbWVudHMgdG8gaHR0cHM6Ly9naXRodWIuY29tL09wZW5Nb2JpbGVBbGxpYW5jZS9PTUFfTHdNMk1fZm9yX0RldmVsb3BlcnMvaXNzdWVzCgpDSEFOR0UgSElTVE9SWQoKMTUwNjIwMTggU3RhdHVzIGNoYW5nZWQgdG8gQXBwcm92ZWQgYnkgRE0sIERvYyBSZWYgIyBPTUEtRE0mU0UtMjAxOC0wMDYxLUlOUF9MV00yTV9BUFBEQVRBX1YxXzBfRVJQX2Zvcl9maW5hbF9BcHByb3ZhbAoyMTAyMjAxOSBTdGF0dXMgY2hhbmdlZCB0byBBcHByb3ZlZCBieSBJUFNPLCBEb2MgUmVmICMgT01BLUlQU08tMjAxOS0wMDI1LUlOUF9Md00yTV9PYmplY3RfQXBwX0RhdGFfQ29udGFpbmVyXzFfMF8xX2Zvcl9GaW5hbF9BcHByb3ZhbAoKTEVHQUwgRElTQ0xBSU1FUgoKQ29weXJpZ2h0IDIwMTkgT3BlbiBNb2JpbGUgQWxsaWFuY2UuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwpjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwoiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVApMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLApCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CkxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCkFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KClRoZSBhYm92ZSBsaWNlbnNlIGlzIHVzZWQgYXMgYSBsaWNlbnNlIHVuZGVyIGNvcHlyaWdodCBvbmx5LiBQbGVhc2UKcmVmZXJlbmNlIHRoZSBPTUEgSVBSIFBvbGljeSBmb3IgcGF0ZW50IGxpY2Vuc2luZyB0ZXJtczoKaHR0cHM6Ly93d3cub21hc3BlY3dvcmtzLm9yZy9hYm91dC9pbnRlbGxlY3R1YWwtcHJvcGVydHktcmlnaHRzLwoKLS0+CjxMV00yTSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iaHR0cDovL29wZW5tb2JpbGVhbGxpYW5jZS5vcmcvdGVjaC9wcm9maWxlcy9MV00yTS54c2QiPgoJPE9iamVjdCBPYmplY3RUeXBlPSJNT0RlZmluaXRpb24iPgoJCTxOYW1lPkJpbmFyeUFwcERhdGFDb250YWluZXI8L05hbWU+CgkJPERlc2NyaXB0aW9uMT48IVtDREFUQVtUaGlzIEx3TTJNIE9iamVjdHMgcHJvdmlkZXMgdGhlIGFwcGxpY2F0aW9uIHNlcnZpY2UgZGF0YSByZWxhdGVkIHRvIGEgTHdNMk0gU2VydmVyLCBlZy4gV2F0ZXIgbWV0ZXIgZGF0YS4gClRoZXJlIGFyZSBzZXZlcmFsIG1ldGhvZHMgdG8gY3JlYXRlIGluc3RhbmNlIHRvIGluZGljYXRlIHRoZSBtZXNzYWdlIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGUgbmVnb3RpYXRpb24gYmV0d2VlbiBBcHBsaWNhdGlvbiBhbmQgTHdNMk0uIFRoZSBDbGllbnQgYW5kIFNlcnZlciBzaG91bGQgbmVnb3RpYXRlIHRoZSBpbnN0YW5jZShzKSB1c2VkIHRvIGV4Y2hhbmdlIHRoZSBkYXRhLiBGb3IgZXhhbXBsZToKIC0gVXNpbmcgYSBzaW5nbGUgaW5zdGFuY2UgZm9yIGJvdGggZGlyZWN0aW9ucyBjb21tdW5pY2F0aW9uLCBmcm9tIENsaWVudCB0byBTZXJ2ZXIgYW5kIGZyb20gU2VydmVyIHRvIENsaWVudC4KIC0gVXNpbmcgYW4gaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24gZnJvbSBDbGllbnQgdG8gU2VydmVyIGFuZCBhbm90aGVyIG9uZSBmb3IgY29tbXVuaWNhdGlvbiBmcm9tIFNlcnZlciB0byBDbGllbnQKIC0gVXNpbmcgc2V2ZXJhbCBpbnN0YW5jZXMKXV0+PC9EZXNjcmlwdGlvbjE+CgkJPE9iamVjdElEPjE5PC9PYmplY3RJRD4KCQk8T2JqZWN0VVJOPnVybjpvbWE6bHdtMm06b21hOjE5PC9PYmplY3RVUk4+CgkJPExXTTJNVmVyc2lvbj4xLjA8L0xXTTJNVmVyc2lvbj4KCQk8T2JqZWN0VmVyc2lvbj4xLjA8L09iamVjdFZlcnNpb24+CgkJPE11bHRpcGxlSW5zdGFuY2VzPk11bHRpcGxlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQk8TWFuZGF0b3J5Pk9wdGlvbmFsPC9NYW5kYXRvcnk+CgkJPFJlc291cmNlcz4KCQkJPEl0ZW0gSUQ9IjAiPjxOYW1lPkRhdGE8L05hbWU+CgkJCQk8T3BlcmF0aW9ucz5SVzwvT3BlcmF0aW9ucz4KCQkJCTxNdWx0aXBsZUluc3RhbmNlcz5NdWx0aXBsZTwvTXVsdGlwbGVJbnN0YW5jZXM+CgkJCQk8TWFuZGF0b3J5Pk1hbmRhdG9yeTwvTWFuZGF0b3J5PgoJCQkJPFR5cGU+T3BhcXVlPC9UeXBlPgoJCQkJPFJhbmdlRW51bWVyYXRpb24gLz4KCQkJCTxVbml0cyAvPgoJCQkJPERlc2NyaXB0aW9uPjwhW0NEQVRBW0luZGljYXRlcyB0aGUgYXBwbGljYXRpb24gZGF0YSBjb250ZW50Ll1dPjwvRGVzY3JpcHRpb24+CgkJCTwvSXRlbT4KCQkJPEl0ZW0gSUQ9IjEiPjxOYW1lPkRhdGEgUHJpb3JpdHk8L05hbWU+CgkJCQk8T3BlcmF0aW9ucz5SVzwvT3BlcmF0aW9ucz4KCQkJCTxNdWx0aXBsZUluc3RhbmNlcz5TaW5nbGU8L011bHRpcGxlSW5zdGFuY2VzPgoJCQkJPE1hbmRhdG9yeT5PcHRpb25hbDwvTWFuZGF0b3J5PgoJCQkJPFR5cGU+SW50ZWdlcjwvVHlwZT4KCQkJCTxSYW5nZUVudW1lcmF0aW9uPjEgYnl0ZXM8L1JhbmdlRW51bWVyYXRpb24+CgkJCQk8VW5pdHMgLz4KCQkJCTxEZXNjcmlwdGlvbj48IVtDREFUQVtJbmRpY2F0ZXMgdGhlIEFwcGxpY2F0aW9uIGRhdGEgcHJpb3JpdHk6CjA6SW1tZWRpYXRlCjE6QmVzdEVmZm9ydAoyOkxhdGVzdAozLTEwMDogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCjEwMS0yNTQ6IFByb3ByaWV0YXJ5IG1vZGUuXV0+PC9EZXNjcmlwdGlvbj4KCQkJPC9JdGVtPgoJCQk8SXRlbSBJRD0iMiI+PE5hbWU+RGF0YSBDcmVhdGlvbiBUaW1lPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPlRpbWU8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbiAvPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBEYXRhIGluc3RhbmNlIGNyZWF0aW9uIHRpbWVzdGFtcC5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+CgkJCTxJdGVtIElEPSIzIj48TmFtZT5EYXRhIERlc2NyaXB0aW9uPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPlN0cmluZzwvVHlwZT4KCQkJCTxSYW5nZUVudW1lcmF0aW9uPjMyIGJ5dGVzPC9SYW5nZUVudW1lcmF0aW9uPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBkYXRhIGRlc2NyaXB0aW9uLgplLmcuICJtZXRlciByZWFkaW5nIi5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+CgkJCTxJdGVtIElEPSI0Ij48TmFtZT5EYXRhIEZvcm1hdDwvTmFtZT4KCQkJCTxPcGVyYXRpb25zPlJXPC9PcGVyYXRpb25zPgoJCQkJPE11bHRpcGxlSW5zdGFuY2VzPlNpbmdsZTwvTXVsdGlwbGVJbnN0YW5jZXM+CgkJCQk8TWFuZGF0b3J5Pk9wdGlvbmFsPC9NYW5kYXRvcnk+CgkJCQk8VHlwZT5TdHJpbmc8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbj4zMiBieXRlczwvUmFuZ2VFbnVtZXJhdGlvbj4KCQkJCTxVbml0cyAvPgoJCQkJPERlc2NyaXB0aW9uPjwhW0NEQVRBW0luZGljYXRlcyB0aGUgZm9ybWF0IG9mIHRoZSBBcHBsaWNhdGlvbiBEYXRhLgplLmcuIFlHLU1ldGVyLVdhdGVyLVJlYWRpbmcKVVRGOC1zdHJpbmcKXV0+PC9EZXNjcmlwdGlvbj4KCQkJPC9JdGVtPgoJCQk8SXRlbSBJRD0iNSI+PE5hbWU+QXBwIElEPC9OYW1lPgoJCQkJPE9wZXJhdGlvbnM+Ulc8L09wZXJhdGlvbnM+CgkJCQk8TXVsdGlwbGVJbnN0YW5jZXM+U2luZ2xlPC9NdWx0aXBsZUluc3RhbmNlcz4KCQkJCTxNYW5kYXRvcnk+T3B0aW9uYWw8L01hbmRhdG9yeT4KCQkJCTxUeXBlPkludGVnZXI8L1R5cGU+CgkJCQk8UmFuZ2VFbnVtZXJhdGlvbj4yIGJ5dGVzPC9SYW5nZUVudW1lcmF0aW9uPgoJCQkJPFVuaXRzIC8+CgkJCQk8RGVzY3JpcHRpb24+PCFbQ0RBVEFbSW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBBcHBsaWNhdGlvbiBJRC5dXT48L0Rlc2NyaXB0aW9uPgoJCQk8L0l0ZW0+PC9SZXNvdXJjZXM+CgkJPERlc2NyaXB0aW9uMj48IVtDREFUQVtdXT48L0Rlc2NyaXB0aW9uMj4KCTwvT2JqZWN0Pgo8L0xXTTJNPgo="},"preview":{"type":"string"},"name":{"type":"string","readOnly":true},"public":{"type":"boolean"},"link":{"type":"string","readOnly":true},"publicLink":{"type":"string","readOnly":true}}},"EntityRelationsQuery":{"type":"object","description":"A JSON value representing the entity relations query object.","properties":{"parameters":{"$ref":"#/components/schemas/RelationsSearchParameters","description":"Main search parameters."},"filters":{"type":"array","description":"Main filters.","items":{"$ref":"#/components/schemas/RelationEntityTypeFilter"}}}},"RelationEntityTypeFilter":{"type":"object","properties":{"relationType":{"type":"string","description":"Type of the relation between root entity and other entity (e.g. 'Contains' or 'Manages').","example":"Contains"},"entityTypes":{"type":"array","description":"Array of entity types to filter the related entities (e.g. 'DEVICE', 'ASSET').","items":{"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"]}},"negate":{"type":"boolean","description":"Negate relation type between root entity and other entity."}}},"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."}}},"EntityRelationInfo":{"type":"object","properties":{"from":{"$ref":"#/components/schemas/EntityId","description":"JSON object with [from] Entity Id."},"to":{"$ref":"#/components/schemas/EntityId","description":"JSON object with [to] Entity Id."},"type":{"type":"string","description":"String value of relation type.","example":"Contains","minLength":1},"typeGroup":{"type":"string","description":"Represents the type group of the relation.","enum":["COMMON","DASHBOARD","RULE_CHAIN","RULE_NODE","EDGE","EDGE_AUTO_ASSIGN_RULE_CHAIN"],"example":"COMMON"},"version":{"type":"integer","format":"int64"},"fromName":{"type":"string","description":"Name of the entity for [from] direction.","example":"A4B72CCDFF33","readOnly":true},"toName":{"type":"string","description":"Name of the entity for [to] direction.","example":"A4B72CCDFF35","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the relation"}},"required":["from","to","type","typeGroup"]},"Queue":{"type":"object","description":"A JSON value representing the queue.","properties":{"id":{"$ref":"#/components/schemas/QueueId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"name":{"type":"string"},"topic":{"type":"string"},"pollInterval":{"type":"integer","format":"int32"},"partitions":{"type":"integer","format":"int32"},"consumerPerPartition":{"type":"boolean"},"packProcessingTimeout":{"type":"integer","format":"int64"},"submitStrategy":{"$ref":"#/components/schemas/SubmitStrategy"},"processingStrategy":{"$ref":"#/components/schemas/ProcessingStrategy"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}}},"QueueId":{"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":["QUEUE"],"example":"QUEUE"}},"required":["entityType","id"]},"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"}}},"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"}}},"OAuth2BasicMapperConfig":{"type":"object","properties":{"emailAttributeKey":{"type":"string","description":"Email attribute key of OAuth2 principal attributes. Must be specified for BASIC mapper type and cannot be specified for GITHUB type"},"firstNameAttributeKey":{"type":"string","description":"First name attribute key"},"lastNameAttributeKey":{"type":"string","description":"Last name attribute key"},"tenantNameStrategy":{"type":"string","description":"Tenant naming strategy. For DOMAIN type, domain for tenant name will be taken from the email (substring before '@')","enum":["DOMAIN","EMAIL","CUSTOM"]},"tenantNamePattern":{"type":"string","description":"Tenant name pattern for CUSTOM naming strategy. OAuth2 attributes in the pattern can be used by enclosing attribute key in '%{' and '}'","example":"%{email}"},"customerNamePattern":{"type":"string","description":"Customer name pattern. When creating a user on the first OAuth2 log in, if specified, customer name will be used to create or find existing customer in the platform and assign customerId to the user"},"defaultDashboardName":{"type":"string","description":"Name of the tenant's dashboard to set as default dashboard for newly created user"},"alwaysFullScreen":{"type":"boolean","description":"Whether default dashboard should be open in full screen"}},"required":["tenantNameStrategy"]},"OAuth2ClientRegistrationTemplate":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/OAuth2ClientRegistrationTemplateId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"providerId":{"type":"string","description":"OAuth2 provider identifier (e.g. its name)"},"mapperConfig":{"$ref":"#/components/schemas/OAuth2MapperConfig","description":"Default config for mapping OAuth2 log in response to platform entities"},"authorizationUri":{"type":"string","description":"Default authorization URI of the OAuth2 provider"},"accessTokenUri":{"type":"string","description":"Default access token URI of the OAuth2 provider"},"scope":{"type":"array","description":"Default OAuth scopes that will be requested from OAuth2 platform","items":{"type":"string"}},"userInfoUri":{"type":"string","description":"Default user info URI of the OAuth2 provider"},"userNameAttributeName":{"type":"string","description":"Default name of the username attribute in OAuth2 provider log in response"},"jwkSetUri":{"type":"string","description":"Default JSON Web Key URI of the OAuth2 provider"},"clientAuthenticationMethod":{"type":"string","description":"Default client authentication method to use: 'BASIC' or 'POST'"},"comment":{"type":"string","description":"Comment for OAuth2 provider"},"loginButtonIcon":{"type":"string","description":"Default log in button icon for OAuth2 provider"},"loginButtonLabel":{"type":"string","description":"Default OAuth2 provider label"},"helpLink":{"type":"string","description":"Help link for OAuth2 provider"},"name":{"type":"string"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}},"required":["providerId"]},"OAuth2ClientRegistrationTemplateId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"OAuth2CustomMapperConfig":{"type":"object","properties":{"url":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"sendToken":{"type":"boolean"}}},"OAuth2MapperConfig":{"type":"object","properties":{"allowUserCreation":{"type":"boolean","description":"Whether user should be created if not yet present on the platform after successful authentication"},"activateUser":{"type":"boolean","description":"Whether user credentials should be activated when user is created after successful authentication"},"type":{"type":"string","description":"Type of OAuth2 mapper. Depending on this param, different mapper config fields must be specified","enum":["BASIC","CUSTOM","GITHUB","APPLE"]},"basic":{"$ref":"#/components/schemas/OAuth2BasicMapperConfig","description":"Mapper config for BASIC and GITHUB mapper types"},"custom":{"$ref":"#/components/schemas/OAuth2CustomMapperConfig","description":"Mapper config for CUSTOM mapper type"}},"required":["type"]},"OAuth2Client":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/OAuth2ClientId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional info of OAuth2 client (e.g. providerName)"},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"title":{"type":"string","description":"Oauth2 client title","minLength":1},"mapperConfig":{"$ref":"#/components/schemas/OAuth2MapperConfig","description":"Config for mapping OAuth2 log in response to platform entities"},"clientId":{"type":"string","description":"OAuth2 client ID. Cannot be empty","minLength":1},"clientSecret":{"type":"string","description":"OAuth2 client secret. Cannot be empty","minLength":1},"authorizationUri":{"type":"string","description":"Authorization URI of the OAuth2 provider. Cannot be empty","minLength":1},"accessTokenUri":{"type":"string","description":"Access token URI of the OAuth2 provider. Cannot be empty","minLength":1},"scope":{"type":"array","description":"OAuth scopes that will be requested from OAuth2 platform. Cannot be empty","items":{"type":"string"},"minItems":1},"userInfoUri":{"type":"string","description":"User info URI of the OAuth2 provider"},"userNameAttributeName":{"type":"string","description":"Name of the username attribute in OAuth2 provider response. Cannot be empty","minLength":1},"jwkSetUri":{"type":"string","description":"JSON Web Key URI of the OAuth2 provider"},"clientAuthenticationMethod":{"type":"string","description":"Client authentication method to use: 'BASIC' or 'POST'. Cannot be empty","minLength":1},"loginButtonLabel":{"type":"string","description":"OAuth2 provider label. Cannot be empty","minLength":1},"loginButtonIcon":{"type":"string","description":"Log in button icon for OAuth2 provider"},"platforms":{"type":"array","description":"List of platforms for which usage of the OAuth2 client is allowed (empty for all allowed)","items":{"type":"string","enum":["WEB","ANDROID","IOS"]}},"name":{"type":"string","readOnly":true}},"required":["accessTokenUri","additionalInfo","authorizationUri","clientAuthenticationMethod","clientId","clientSecret","loginButtonLabel","mapperConfig","scope","title","userNameAttributeName"]},"OAuth2ClientId":{"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"]},"Button":{"type":"object","properties":{"enabled":{"type":"boolean"},"text":{"type":"string"},"linkType":{"type":"string","enum":["LINK","DASHBOARD"]},"link":{"type":"string"},"dashboardId":{"type":"string","format":"uuid"},"dashboardState":{"type":"string"},"setEntityIdInState":{"type":"boolean"}}},"DeliveryMethodNotificationTemplate":{"type":"object","discriminator":{"propertyName":"method"},"properties":{"enabled":{"type":"boolean"},"body":{"type":"string","minLength":1},"method":{"type":"string"}},"required":["body","method"]},"EmailDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"},{"type":"object","properties":{"subject":{"type":"string","minLength":1}}}],"required":["body","subject"]},"MicrosoftTeamsDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"},{"type":"object","properties":{"subject":{"type":"string"},"themeColor":{"type":"string"},"button":{"$ref":"#/components/schemas/Button"}}}],"required":["body"]},"MobileAppDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"},{"type":"object","properties":{"subject":{"type":"string","minLength":1},"additionalConfig":{"$ref":"#/components/schemas/JsonNode"}}}],"required":["body","subject"]},"NotificationTemplate":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/NotificationTemplateId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"name":{"type":"string","minLength":1},"notificationType":{"type":"string","enum":["GENERAL","ALARM","DEVICE_ACTIVITY","ENTITY_ACTION","ALARM_COMMENT","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","ALARM_ASSIGNMENT","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","ENTITIES_LIMIT_INCREASE_REQUEST","API_USAGE_LIMIT","RULE_NODE","RATE_LIMITS","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]},"configuration":{"$ref":"#/components/schemas/NotificationTemplateConfig"}},"required":["configuration","name","notificationType"]},"NotificationTemplateConfig":{"type":"object","properties":{"deliveryMethodsTemplates":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/EmailDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/MicrosoftTeamsDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/MobileAppDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/SlackDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/SmsDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/WebDeliveryMethodNotificationTemplate"}]},"minProperties":1}},"required":["deliveryMethodsTemplates"]},"NotificationTemplateId":{"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":["NOTIFICATION_TEMPLATE"],"example":"NOTIFICATION_TEMPLATE"}},"required":["entityType","id"]},"SlackDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"}],"required":["body"]},"SmsDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"}],"required":["body"]},"WebDeliveryMethodNotificationTemplate":{"allOf":[{"$ref":"#/components/schemas/DeliveryMethodNotificationTemplate"},{"type":"object","properties":{"subject":{"type":"string","minLength":1},"additionalConfig":{"$ref":"#/components/schemas/JsonNode"}}}],"required":["body","subject"]},"AffectedTenantAdministratorsFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"}]},"AffectedUserFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"}]},"AllUsersFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"}]},"CustomerUsersFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"},{"type":"object","properties":{"customerId":{"type":"string","format":"uuid"}}}],"required":["customerId"]},"MicrosoftTeamsNotificationTargetConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationTargetConfig"},{"type":"object","properties":{"webhookUrl":{"type":"string","minLength":1},"channelName":{"type":"string","minLength":1},"useOldApi":{"type":"boolean"},"id":{},"title":{"type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"}}}],"required":["channelName","webhookUrl"]},"NotificationTarget":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/NotificationTargetId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"name":{"type":"string","minLength":1},"configuration":{"oneOf":[{"$ref":"#/components/schemas/MicrosoftTeamsNotificationTargetConfig"},{"$ref":"#/components/schemas/PlatformUsersNotificationTargetConfig"},{"$ref":"#/components/schemas/SlackNotificationTargetConfig"}]}},"required":["configuration","name"]},"NotificationTargetConfig":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"description":{"type":"string"},"type":{"type":"string"}},"required":["type"]},"NotificationTargetId":{"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":["NOTIFICATION_TARGET"],"example":"NOTIFICATION_TARGET"}},"required":["entityType","id"]},"OriginatorEntityOwnerUsersFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"}]},"PlatformUsersNotificationTargetConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationTargetConfig"},{"type":"object","properties":{"usersFilter":{"oneOf":[{"$ref":"#/components/schemas/AffectedTenantAdministratorsFilter"},{"$ref":"#/components/schemas/AffectedUserFilter"},{"$ref":"#/components/schemas/AllUsersFilter"},{"$ref":"#/components/schemas/CustomerUsersFilter"},{"$ref":"#/components/schemas/OriginatorEntityOwnerUsersFilter"},{"$ref":"#/components/schemas/SystemAdministratorsFilter"},{"$ref":"#/components/schemas/TenantAdministratorsFilter"},{"$ref":"#/components/schemas/UserListFilter"}]}}}],"required":["usersFilter"]},"SlackConversation":{"type":"object","properties":{"type":{"type":"string","enum":["DIRECT","PUBLIC_CHANNEL","PRIVATE_CHANNEL"]},"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"wholeName":{"type":"string"},"email":{"type":"string"},"title":{"type":"string"}},"required":["id","name","type"]},"SlackNotificationTargetConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationTargetConfig"},{"type":"object","properties":{"conversationType":{"type":"string","enum":["DIRECT","PUBLIC_CHANNEL","PRIVATE_CHANNEL"]},"conversation":{"$ref":"#/components/schemas/SlackConversation"}}}],"required":["conversation"]},"SystemAdministratorsFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"}]},"TenantAdministratorsFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"},{"type":"object","properties":{"tenantsIds":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true},"tenantProfilesIds":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true}}}]},"UserListFilter":{"allOf":[{"$ref":"#/components/schemas/UsersFilter"},{"type":"object","properties":{"usersIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1}}}],"required":["usersIds"]},"UsersFilter":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"PageDataUser":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/User"},"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}}},"MobileAppNotificationDeliveryMethodConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationDeliveryMethodConfig"},{"type":"object","properties":{"firebaseServiceAccountCredentialsFileName":{"type":"string"},"firebaseServiceAccountCredentials":{"type":"string","minLength":1}}}],"required":["firebaseServiceAccountCredentials"]},"NotificationDeliveryMethodConfig":{"discriminator":{"propertyName":"method"},"properties":{"method":{"type":"string"}},"required":["method"]},"NotificationSettings":{"type":"object","properties":{"deliveryMethodsConfigs":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/MobileAppNotificationDeliveryMethodConfig"},{"$ref":"#/components/schemas/SlackNotificationDeliveryMethodConfig"}]}}},"required":["deliveryMethodsConfigs"]},"SlackNotificationDeliveryMethodConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationDeliveryMethodConfig"},{"type":"object","properties":{"botToken":{"type":"string","minLength":1}}}],"required":["botToken"]},"NotificationPref":{"type":"object","properties":{"enabled":{"type":"boolean"},"enabledDeliveryMethods":{"type":"object","additionalProperties":{"type":"boolean"}}},"required":["enabledDeliveryMethods"]},"UserNotificationSettings":{"type":"object","properties":{"prefs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/NotificationPref"}}},"required":["prefs"]},"AlarmAssignmentNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"alarmTypes":{"type":"array","items":{"type":"string"},"uniqueItems":true},"alarmSeverities":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]},"uniqueItems":true},"alarmStatuses":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]},"uniqueItems":true},"notifyOn":{"type":"array","items":{"type":"string","enum":["ASSIGNED","UNASSIGNED"]},"minItems":1,"uniqueItems":true}}}],"required":["notifyOn"]},"AlarmCommentNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"alarmTypes":{"type":"array","items":{"type":"string"},"uniqueItems":true},"alarmSeverities":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]},"uniqueItems":true},"alarmStatuses":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]},"uniqueItems":true},"onlyUserComments":{"type":"boolean"},"notifyOnCommentUpdate":{"type":"boolean"}}}]},"AlarmNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"alarmTypes":{"type":"array","items":{"type":"string"},"uniqueItems":true},"alarmSeverities":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]},"uniqueItems":true},"notifyOn":{"type":"array","items":{"type":"string","enum":["CREATED","SEVERITY_CHANGED","ACKNOWLEDGED","CLEARED"]},"minItems":1,"uniqueItems":true},"clearRule":{"$ref":"#/components/schemas/ClearRule"}}}],"required":["notifyOn"]},"ApiUsageLimitNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"apiFeatures":{"type":"array","items":{"type":"string","enum":["TRANSPORT","DB","RE","JS","TBEL","EMAIL","SMS","ALARM"]},"uniqueItems":true},"notifyOn":{"type":"array","items":{"type":"string","enum":["ENABLED","WARNING","DISABLED"]},"uniqueItems":true}}}]},"ClearRule":{"type":"object","properties":{"alarmStatuses":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]},"uniqueItems":true}}},"DeviceActivityNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"devices":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true},"deviceProfiles":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true},"notifyOn":{"type":"array","items":{"type":"string","enum":["ACTIVE","INACTIVE"]},"minItems":1,"uniqueItems":true}}}],"required":["notifyOn"]},"EdgeCommunicationFailureNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"edges":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true}}}]},"EdgeConnectionNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"edges":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true},"notifyOn":{"type":"array","items":{"type":"string","enum":["CONNECTED","DISCONNECTED"]},"uniqueItems":true}}}]},"EntitiesLimitNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"entityTypes":{"type":"array","items":{"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"]},"uniqueItems":true},"threshold":{"type":"number","format":"float","maximum":1}}}]},"EntityActionNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"entityTypes":{"type":"array","items":{"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"]},"uniqueItems":true},"created":{"type":"boolean"},"updated":{"type":"boolean"},"deleted":{"type":"boolean"}}}]},"EscalatedNotificationRuleRecipientsConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleRecipientsConfig"},{"type":"object","properties":{"escalationTable":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"uuid"}},"minProperties":1}}}],"required":["escalationTable","triggerType"]},"NewPlatformVersionNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"}]},"NotificationRule":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/NotificationRuleId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"name":{"type":"string","minLength":1},"enabled":{"type":"boolean"},"templateId":{"$ref":"#/components/schemas/NotificationTemplateId"},"triggerType":{"type":"string","enum":["ENTITY_ACTION","ALARM","ALARM_COMMENT","ALARM_ASSIGNMENT","DEVICE_ACTIVITY","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","API_USAGE_LIMIT","RATE_LIMITS","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]},"triggerConfig":{"oneOf":[{"$ref":"#/components/schemas/AlarmAssignmentNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/AlarmCommentNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/AlarmNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/ApiUsageLimitNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/DeviceActivityNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EdgeCommunicationFailureNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EdgeConnectionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EntitiesLimitNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EntityActionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/NewPlatformVersionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/RateLimitsNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/ResourcesShortageNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/TaskProcessingFailureNotificationRuleTriggerConfig"}]},"recipientsConfig":{"oneOf":[{"$ref":"#/components/schemas/EscalatedNotificationRuleRecipientsConfig"}]},"additionalConfig":{"$ref":"#/components/schemas/NotificationRuleConfig"}},"required":["name","recipientsConfig","templateId","triggerConfig","triggerType"]},"NotificationRuleConfig":{"type":"object","properties":{"description":{"type":"string"}}},"NotificationRuleId":{"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":["NOTIFICATION_RULE"],"example":"NOTIFICATION_RULE"}},"required":["entityType","id"]},"NotificationRuleRecipientsConfig":{"type":"object","discriminator":{"propertyName":"triggerType"},"properties":{"triggerType":{"type":"string","enum":["ENTITY_ACTION","ALARM","ALARM_COMMENT","ALARM_ASSIGNMENT","DEVICE_ACTIVITY","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","API_USAGE_LIMIT","RATE_LIMITS","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]}},"required":["triggerType"]},"NotificationRuleTriggerConfig":{"type":"object","discriminator":{"propertyName":"triggerType"},"properties":{"triggerType":{"type":"string","enum":["ENTITY_ACTION","ALARM","ALARM_COMMENT","ALARM_ASSIGNMENT","DEVICE_ACTIVITY","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","API_USAGE_LIMIT","RATE_LIMITS","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]}}},"RateLimitsNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"apis":{"type":"array","items":{"type":"string","enum":["ENTITY_EXPORT","ENTITY_IMPORT","NOTIFICATION_REQUESTS","NOTIFICATION_REQUESTS_PER_RULE","REST_REQUESTS_PER_TENANT","REST_REQUESTS_PER_CUSTOMER","WS_UPDATES_PER_SESSION","CASSANDRA_WRITE_QUERIES_CORE","CASSANDRA_READ_QUERIES_CORE","CASSANDRA_WRITE_QUERIES_RULE_ENGINE","CASSANDRA_READ_QUERIES_RULE_ENGINE","CASSANDRA_READ_QUERIES_MONOLITH","CASSANDRA_WRITE_QUERIES_MONOLITH","CASSANDRA_QUERIES","EDGE_EVENTS","EDGE_EVENTS_PER_EDGE","EDGE_UPLINK_MESSAGES","EDGE_UPLINK_MESSAGES_PER_EDGE","PASSWORD_RESET","TWO_FA_VERIFICATION_CODE_SEND","TWO_FA_VERIFICATION_CODE_CHECK","TRANSPORT_MESSAGES_PER_TENANT","TRANSPORT_MESSAGES_PER_DEVICE","TRANSPORT_MESSAGES_PER_GATEWAY","TRANSPORT_MESSAGES_PER_GATEWAY_DEVICE","EMAILS","WS_SUBSCRIPTIONS","CALCULATED_FIELD_DEBUG_EVENTS"]},"uniqueItems":true}}}]},"ResourcesShortageNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"cpuThreshold":{"type":"number","format":"float","maximum":1},"ramThreshold":{"type":"number","format":"float","maximum":1},"storageThreshold":{"type":"number","format":"float","maximum":1}}}]},"RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"},{"type":"object","properties":{"ruleChains":{"type":"array","items":{"type":"string","format":"uuid"},"uniqueItems":true},"ruleChainEvents":{"type":"array","items":{"type":"string","enum":["CREATED","STARTED","ACTIVATED","SUSPENDED","UPDATED","STOPPED","DELETED","FAILED","DEACTIVATED","RELATION_UPDATED","RELATION_DELETED"]},"uniqueItems":true},"onlyRuleChainLifecycleFailures":{"type":"boolean"},"trackRuleNodeEvents":{"type":"boolean"},"ruleNodeEvents":{"type":"array","items":{"type":"string","enum":["CREATED","STARTED","ACTIVATED","SUSPENDED","UPDATED","STOPPED","DELETED","FAILED","DEACTIVATED","RELATION_UPDATED","RELATION_DELETED"]},"uniqueItems":true},"onlyRuleNodeLifecycleFailures":{"type":"boolean"}}}]},"TaskProcessingFailureNotificationRuleTriggerConfig":{"allOf":[{"$ref":"#/components/schemas/NotificationRuleTriggerConfig"}]},"NotificationInfo":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"dashboardId":{"$ref":"#/components/schemas/DashboardId"},"stateEntityId":{"$ref":"#/components/schemas/EntityId"},"type":{"type":"string"}},"required":["type"]},"NotificationRequest":{"type":"object","properties":{"tenantId":{"$ref":"#/components/schemas/TenantId"},"targets":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1},"templateId":{"$ref":"#/components/schemas/NotificationTemplateId"},"template":{"$ref":"#/components/schemas/NotificationTemplate"},"info":{"$ref":"#/components/schemas/NotificationInfo"},"additionalConfig":{"$ref":"#/components/schemas/NotificationRequestConfig"},"originatorEntityId":{"$ref":"#/components/schemas/EntityId"},"ruleId":{"$ref":"#/components/schemas/NotificationRuleId"},"status":{"type":"string","enum":["PROCESSING","SENT","SCHEDULED"]},"stats":{"$ref":"#/components/schemas/NotificationRequestStats"},"id":{"$ref":"#/components/schemas/NotificationRequestId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true}},"required":["targets"]},"NotificationRequestConfig":{"type":"object","properties":{"sendingDelayInSec":{"type":"integer","format":"int32","maximum":604800}}},"NotificationRequestId":{"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":["NOTIFICATION_REQUEST"],"example":"NOTIFICATION_REQUEST"}},"required":["entityType","id"]},"NotificationRequestStats":{"type":"object","properties":{"sent":{"type":"object","additionalProperties":{"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","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}}},"totalErrors":{"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"}}},"error":{"type":"string"}}},"NotificationRequestPreview":{"type":"object","properties":{"processedTemplates":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/EmailDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/MicrosoftTeamsDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/MobileAppDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/SlackDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/SmsDeliveryMethodNotificationTemplate"},{"$ref":"#/components/schemas/WebDeliveryMethodNotificationTemplate"}]}},"totalRecipientsCount":{"type":"integer","format":"int32"},"recipientsCountByTarget":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"recipientsPreview":{"type":"array","items":{"type":"string"}}}},"SignUpRequest":{"type":"object","properties":{"firstName":{"type":"string","description":"First Name","example":"John"},"lastName":{"type":"string","description":"Last Name","example":"Doe"},"email":{"type":"string","description":"Email will be used for new user to login","example":"john.doe@company.com"},"password":{"type":"string","description":"New User Password","example":"secret"},"recaptchaResponse":{"type":"string","description":"Response from reCAPTCHA validation"},"pkgName":{"type":"string","description":"For mobile apps only. Mobile app package name"},"appSecret":{"type":"string","description":"For mobile apps only. Mobile app secret"}}},"ResetPasswordRequest":{"type":"object","description":"Reset password request.","properties":{"resetToken":{"type":"string","description":"The reset token to verify","example":"AAB254FF67D.."},"password":{"type":"string","description":"The new password to set","example":"secret"}}},"ResetPasswordEmailRequest":{"type":"object","description":"The JSON object representing the reset password email request.","properties":{"email":{"type":"string","description":"The email of the user","example":"user@example.com"}}},"OAuth2ClientLoginInfo":{"type":"object","properties":{"name":{"type":"string","description":"OAuth2 client name","example":"GitHub"},"icon":{"type":"string","description":"Name of the icon, displayed on OAuth2 log in button","example":"github-logo"},"url":{"type":"string","description":"URI for OAuth2 log in. On HTTP GET request to this URI, it redirects to the OAuth2 provider page","example":"/oauth2/authorization/8352f191-2b4d-11ec-9ed1-cbf57c026ecc"}}},"ActivateUserRequest":{"type":"object","description":"Activate user request.","properties":{"activateToken":{"type":"string","description":"The activate token to verify","example":"AAB254FF67D.."},"password":{"type":"string","description":"The new password to set","example":"secret"}}},"MobileAppBundleId":{"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"]},"QRCodeConfig":{"type":"object","properties":{"showOnHomePage":{"type":"boolean"},"badgeEnabled":{"type":"boolean"},"qrCodeLabelEnabled":{"type":"boolean"},"badgePosition":{"type":"string","enum":["RIGHT","LEFT"]},"qrCodeLabel":{"type":"string"}}},"QrCodeSettings":{"type":"object","description":"A JSON value representing the mobile apps configuration","properties":{"id":{"$ref":"#/components/schemas/QrCodeSettingsId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"useSystemSettings":{"type":"boolean","description":"Use settings from system level","example":true},"useDefaultApp":{"type":"boolean","description":"Type of application: true means use default Thingsboard app","example":true},"mobileAppBundleId":{"$ref":"#/components/schemas/MobileAppBundleId","description":"Mobile app bundle."},"qrCodeConfig":{"$ref":"#/components/schemas/QRCodeConfig","description":"QR code config configuration."},"androidEnabled":{"type":"boolean","description":"Indicates if google play link is available","example":true},"iosEnabled":{"type":"boolean","description":"Indicates if apple store link is available","example":true},"googlePlayLink":{"type":"string","readOnly":true},"appStoreLink":{"type":"string","readOnly":true}},"required":["qrCodeConfig"]},"QrCodeSettingsId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"CustomMobilePage":{"allOf":[{"$ref":"#/components/schemas/MobilePage"},{"type":"object","properties":{"path":{"type":"string","description":"Path to custom page","example":"/alarmDetails/868c7083-032d-4f52-b8b4-7859aebb6a4e"},"label":{"type":"string","description":"Page label","example":"Air quality"},"visible":{"type":"boolean","description":"Indicates if page is visible","example":true},"icon":{"type":"string","description":"URL of the page icon","example":"home_icon"}}}],"required":["visible"]},"DashboardPage":{"allOf":[{"$ref":"#/components/schemas/MobilePage"},{"type":"object","properties":{"dashboardId":{"type":"string","description":"Dashboard id","example":"784f394c-42b6-435a-983c-b7beff2784f9"},"label":{"type":"string","description":"Page label","example":"Air quality"},"visible":{"type":"boolean","description":"Indicates if page is visible","example":true},"icon":{"type":"string","description":"URL of the page icon","example":"home_icon"}}}],"required":["visible"]},"DefaultMobilePage":{"allOf":[{"$ref":"#/components/schemas/MobilePage"},{"type":"object","properties":{"id":{"type":"string","description":"Identifier for default page","enum":["HOME","ALARMS","DEVICES","CUSTOMERS","ASSETS","AUDIT_LOGS","NOTIFICATIONS","DEVICE_LIST","DASHBOARDS"],"example":"HOME"},"label":{"type":"string","description":"Page label","example":"Air quality"},"visible":{"type":"boolean","description":"Indicates if page is visible","example":true},"icon":{"type":"string","description":"URL of the page icon","example":"home_icon"}}}],"required":["visible"]},"MobileAppBundle":{"type":"object","description":"A JSON value representing the Mobile Application Bundle.","properties":{"id":{"$ref":"#/components/schemas/MobileAppBundleId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"title":{"type":"string","description":"Application bundle title. Cannot be empty","minLength":1},"description":{"type":"string","description":"Application bundle description."},"androidAppId":{"$ref":"#/components/schemas/MobileAppId","description":"Android application id"},"iosAppId":{"$ref":"#/components/schemas/MobileAppId","description":"IOS application id"},"layoutConfig":{"$ref":"#/components/schemas/MobileLayoutConfig","description":"Application layout configuration"},"oauth2Enabled":{"type":"boolean","description":"Whether OAuth2 settings are enabled or not"},"name":{"type":"string","description":"Mobile app bundle title","example":"My main application","readOnly":true}},"required":["title"]},"MobileAppId":{"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"]},"MobileLayoutConfig":{"type":"object","properties":{"pages":{"type":"array","description":"List of pages","items":{"oneOf":[{"$ref":"#/components/schemas/CustomMobilePage"},{"$ref":"#/components/schemas/DashboardPage"},{"$ref":"#/components/schemas/DefaultMobilePage"},{"$ref":"#/components/schemas/WebViewPage"}]}}}},"MobilePage":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string","enum":["DEFAULT","DASHBOARD","WEB_VIEW","CUSTOM"]},"visible":{"type":"boolean"}}},"WebViewPage":{"allOf":[{"$ref":"#/components/schemas/MobilePage"},{"type":"object","properties":{"url":{"type":"string","description":"Url","example":"/url"},"label":{"type":"string","description":"Page label","example":"Air quality"},"visible":{"type":"boolean","description":"Indicates if page is visible","example":true},"icon":{"type":"string","description":"URL of the page icon","example":"home_icon"}}}],"required":["visible"]},"MobileApp":{"type":"object","description":"A JSON value representing the Mobile Application.","properties":{"id":{"$ref":"#/components/schemas/MobileAppId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"pkgName":{"type":"string","description":"Application package name. Cannot be empty","minLength":1},"title":{"type":"string","description":"Application title"},"appSecret":{"type":"string","description":"Application secret. The length must be at least 16 characters","minLength":1},"platformType":{"type":"string","description":"Application platform type: ANDROID or IOS","enum":["WEB","ANDROID","IOS"]},"status":{"type":"string","description":"Application status: PUBLISHED, DEPRECATED, SUSPENDED, DRAFT","enum":["DRAFT","PUBLISHED","DEPRECATED","SUSPENDED"]},"versionInfo":{"$ref":"#/components/schemas/MobileAppVersionInfo","description":"Application version info"},"storeInfo":{"$ref":"#/components/schemas/StoreInfo","description":"Application store information"},"name":{"type":"string","description":"Mobile app package name","example":"my.mobile.app","readOnly":true}},"required":["appSecret","pkgName","platformType","status"]},"MobileAppVersionInfo":{"type":"object","properties":{"minVersion":{"type":"string","description":"Minimum supported version"},"minVersionReleaseNotes":{"type":"string","description":"Release notes of minimum supported version"},"latestVersion":{"type":"string","description":"Latest supported version"},"latestVersionReleaseNotes":{"type":"string","description":"Release notes of latest supported version"}}},"StoreInfo":{"type":"object","properties":{"appId":{"type":"string"},"sha256CertFingerprints":{"type":"string"},"storeLink":{"type":"string"}}},"CalculatedFieldDebugEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"isError":{"type":"boolean","writeOnly":true},"errorStr":{"type":"string","description":"The case insensitive 'contains' filter based on error message","example":"not present in the DB"},"entityId":{"type":"string","description":"String value representing the entity id in the event body","example":"57b6bafe-d600-423c-9267-fe31e5218986"},"entityType":{"type":"string","description":"String value representing the entity type","enum":["DEVICE"]},"msgId":{"type":"string","description":"String value representing the message id in the rule engine","example":"dcf44612-2ce4-4e5d-b462-ebb9c5628228"},"msgType":{"type":"string","description":"String value representing the message type","example":"POST_TELEMETRY_REQUEST"},"arguments":{"type":"string","description":"String value representing the arguments that were used in the calculation performed","example":{"x":{"ts":1739432016629,"value":20},"y":{"ts":1739429717656,"value":12}}},"result":{"type":"string","description":"String value representing the result of a calculation","example":{"x + y":32}},"error":{"type":"boolean"}}}],"required":["eventType"]},"ErrorEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"method":{"type":"string","description":"String value representing the method name when the error happened","example":"onClusterEventMsg"},"errorStr":{"type":"string","description":"The case insensitive 'contains' filter based on error message","example":"not present in the DB"}}}],"required":["eventType"]},"EventFilter":{"type":"object","discriminator":{"propertyName":"eventType"},"properties":{"eventType":{"type":"string","description":"String value representing the event type","enum":["ERROR","LC_EVENT","STATS","DEBUG_RULE_NODE","DEBUG_RULE_CHAIN","DEBUG_CALCULATED_FIELD"],"example":"STATS"},"notEmpty":{"type":"boolean"}},"required":["eventType"]},"LifeCycleEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"event":{"type":"string","description":"String value representing the lifecycle event type","example":"STARTED"},"status":{"type":"string","description":"String value representing status of the lifecycle event","enum":["Success","Failure"]},"errorStr":{"type":"string","description":"The case insensitive 'contains' filter based on error message","example":"not present in the DB"}}}],"required":["eventType"]},"RuleChainDebugEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"isError":{"type":"boolean","writeOnly":true},"errorStr":{"type":"string","description":"The case insensitive 'contains' filter based on error message","example":"not present in the DB"},"message":{"type":"string","description":"String value representing the message"},"error":{"type":"boolean"}}}],"required":["eventType"]},"RuleNodeDebugEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"isError":{"type":"boolean","writeOnly":true},"errorStr":{"type":"string","description":"The case insensitive 'contains' filter based on error message","example":"not present in the DB"},"msgDirectionType":{"type":"string","description":"String value representing msg direction type (incoming to entity or outcoming from entity)","enum":["IN","OUT"]},"entityId":{"type":"string","description":"String value representing the entity id in the event body (originator of the message)","example":"de9d54a0-2b7a-11ec-a3cc-23386423d98f"},"entityType":{"type":"string","description":"String value representing the entity type","enum":["DEVICE"]},"msgId":{"type":"string","description":"String value representing the message id in the rule engine","example":"de9d54a0-2b7a-11ec-a3cc-23386423d98f"},"msgType":{"type":"string","description":"String value representing the message type","example":"POST_TELEMETRY_REQUEST"},"relationType":{"type":"string","description":"String value representing the type of message routing","example":"Success"},"dataSearch":{"type":"string","description":"The case insensitive 'contains' filter based on data (key and value) for the message.","example":"humidity"},"metadataSearch":{"type":"string","description":"The case insensitive 'contains' filter based on metadata (key and value) for the message.","example":"deviceName"},"error":{"type":"boolean"}}}],"required":["eventType"]},"StatisticsEventFilter":{"allOf":[{"$ref":"#/components/schemas/EventFilter"},{"type":"object","properties":{"server":{"type":"string","description":"String value representing the server name, identifier or ip address where the platform is running","example":"ip-172-31-24-152"},"minMessagesProcessed":{"type":"integer","format":"int32","description":"The minimum number of successfully processed messages","example":25},"maxMessagesProcessed":{"type":"integer","format":"int32","description":"The maximum number of successfully processed messages","example":250},"minErrorsOccurred":{"type":"integer","format":"int32","description":"The minimum number of errors occurred during messages processing","example":30},"maxErrorsOccurred":{"type":"integer","format":"int32","description":"The maximum number of errors occurred during messages processing","example":300}}}],"required":["eventType"]},"EventId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"EventInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EventId"},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the event creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"type":{"type":"string","description":"Event type","example":"STATS"},"uid":{"type":"string","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"},"entityId":{"$ref":"#/components/schemas/EntityId","description":"JSON object with Entity Id for which event is created.","readOnly":true},"body":{"$ref":"#/components/schemas/JsonNode"}}},"PageDataEventInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EventInfo"},"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}}},"EntityViewSearchQuery":{"type":"object","description":"The entity view 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')."},"entityViewTypes":{"type":"array","description":"Array of entity view types to filter the related entities (e.g. 'Temperature Sensor', 'Smoke Sensor').","items":{"type":"string"}}}},"AttributesEntityView":{"type":"object","properties":{"cs":{"type":"array","description":"List of client-side attribute keys to expose","example":["currentConfiguration"],"items":{"type":"string"}},"ss":{"type":"array","description":"List of server-side attribute keys to expose","example":["model"],"items":{"type":"string"}},"sh":{"type":"array","description":"List of shared attribute keys to expose","example":["targetConfiguration"],"items":{"type":"string"}}},"required":["cs","sh","ss"]},"EntityView":{"type":"object","description":"A JSON object representing the entity view.","properties":{"entityId":{"$ref":"#/components/schemas/EntityId","description":"JSON object with the referenced Entity Id (Device or Asset)."},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.","readOnly":true},"name":{"type":"string","description":"Entity View name","example":"A4B72CCDFF33"},"type":{"type":"string","description":"Device Profile Name","example":"Temperature Sensor"},"keys":{"$ref":"#/components/schemas/TelemetryEntityView","description":"Set of telemetry and attribute keys to expose via Entity View."},"startTimeMs":{"type":"integer","format":"int64","description":"Represents the start time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;"},"endTimeMs":{"type":"integer","format":"int64","description":"Represents the end time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;"},"version":{"type":"integer","format":"int64"},"id":{"$ref":"#/components/schemas/EntityViewId","description":"JSON object with the Entity View Id. Specify this field to update the Entity View. Referencing non-existing Entity View Id will cause error. Omit this field to create new Entity View."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Entity View creation, in milliseconds","example":1609459200000,"readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the device"}},"required":["entityId","name","type"]},"EntityViewId":{"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":["ENTITY_VIEW"],"example":"ENTITY_VIEW"}},"required":["entityType","id"]},"TelemetryEntityView":{"type":"object","properties":{"timeseries":{"type":"array","description":"List of time-series data keys to expose","example":["temperature","humidity"],"items":{"type":"string"}},"attributes":{"$ref":"#/components/schemas/AttributesEntityView","description":"JSON object with attributes to expose"}},"required":["attributes","timeseries"]},"AliasEntityId":{"type":"object","properties":{"aliasEntityType":{"type":"string","enum":["CURRENT_CUSTOMER","CURRENT_TENANT","CURRENT_USER","CURRENT_USER_OWNER"]},"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"]},"ApiUsageStateFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"customerId":{"$ref":"#/components/schemas/CustomerId"}}}]},"AssetSearchQueryFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"rootEntity":{"$ref":"#/components/schemas/AliasEntityId"},"relationType":{"type":"string"},"direction":{"type":"string","enum":["FROM","TO"]},"maxLevel":{"type":"integer","format":"int32"},"fetchLastLevelOnly":{"type":"boolean"},"rootStateEntity":{"type":"boolean"},"defaultStateEntity":{"$ref":"#/components/schemas/AliasEntityId"},"assetTypes":{"type":"array","items":{"type":"string"}}}}]},"AssetTypeFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"assetType":{"type":"string","deprecated":true,"writeOnly":true},"assetTypes":{"type":"array","items":{"type":"string"}},"assetNameFilter":{"type":"string"}}}]},"BooleanFilterPredicate":{"allOf":[{"$ref":"#/components/schemas/KeyFilterPredicate"},{"type":"object","properties":{"operation":{"type":"string","enum":["EQUAL","NOT_EQUAL"]},"value":{"$ref":"#/components/schemas/FilterPredicateValueBoolean"}}}]},"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"}]}}}}]},"DeviceSearchQueryFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"rootEntity":{"$ref":"#/components/schemas/AliasEntityId"},"relationType":{"type":"string"},"direction":{"type":"string","enum":["FROM","TO"]},"maxLevel":{"type":"integer","format":"int32"},"fetchLastLevelOnly":{"type":"boolean"},"rootStateEntity":{"type":"boolean"},"defaultStateEntity":{"$ref":"#/components/schemas/AliasEntityId"},"deviceTypes":{"type":"array","items":{"type":"string"}}}}]},"DeviceTypeFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"deviceType":{"type":"string","deprecated":true,"writeOnly":true},"deviceTypes":{"type":"array","items":{"type":"string"}},"deviceNameFilter":{"type":"string"}}}]},"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"}}},"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"}}},"EdgeSearchQueryFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"rootEntity":{"$ref":"#/components/schemas/AliasEntityId"},"relationType":{"type":"string"},"direction":{"type":"string","enum":["FROM","TO"]},"maxLevel":{"type":"integer","format":"int32"},"fetchLastLevelOnly":{"type":"boolean"},"rootStateEntity":{"type":"boolean"},"defaultStateEntity":{"$ref":"#/components/schemas/AliasEntityId"},"edgeTypes":{"type":"array","items":{"type":"string"}}}}]},"EdgeTypeFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"edgeType":{"type":"string","deprecated":true,"writeOnly":true},"edgeTypes":{"type":"array","items":{"type":"string"}},"edgeNameFilter":{"type":"string"}}}]},"EntityDataPageLink":{"type":"object","properties":{"pageSize":{"type":"integer","format":"int32"},"page":{"type":"integer","format":"int32"},"textSearch":{"type":"string"},"sortOrder":{"$ref":"#/components/schemas/EntityDataSortOrder"},"dynamic":{"type":"boolean"}}},"EntityDataQuery":{"type":"object","description":"Entity data query to find entities. Page size is capped at 100.","properties":{"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/ApiUsageStateFilter"},{"$ref":"#/components/schemas/AssetSearchQueryFilter"},{"$ref":"#/components/schemas/AssetTypeFilter"},{"$ref":"#/components/schemas/DeviceSearchQueryFilter"},{"$ref":"#/components/schemas/DeviceTypeFilter"},{"$ref":"#/components/schemas/EdgeSearchQueryFilter"},{"$ref":"#/components/schemas/EdgeTypeFilter"},{"$ref":"#/components/schemas/EntityListFilter"},{"$ref":"#/components/schemas/EntityNameFilter"},{"$ref":"#/components/schemas/EntityTypeFilter"},{"$ref":"#/components/schemas/EntityViewSearchQueryFilter"},{"$ref":"#/components/schemas/EntityViewTypeFilter"},{"$ref":"#/components/schemas/RelationsQueryFilter"},{"$ref":"#/components/schemas/SingleEntityFilter"}]},"keyFilters":{"type":"array","items":{"$ref":"#/components/schemas/KeyFilter"}},"pageLink":{"$ref":"#/components/schemas/EntityDataPageLink"},"entityFields":{"type":"array","items":{"$ref":"#/components/schemas/EntityKey"}},"latestValues":{"type":"array","items":{"$ref":"#/components/schemas/EntityKey"}}}},"EntityDataSortOrder":{"type":"object","properties":{"key":{"$ref":"#/components/schemas/EntityKey"},"direction":{"type":"string","enum":["ASC","DESC"]}}},"EntityFilter":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"EntityKey":{"type":"object","properties":{"type":{"type":"string","enum":["ATTRIBUTE","CLIENT_ATTRIBUTE","SHARED_ATTRIBUTE","SERVER_ATTRIBUTE","TIME_SERIES","ENTITY_FIELD","ALARM_FIELD"]},"key":{"type":"string"}}},"EntityListFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"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"]},"entityList":{"type":"array","items":{"type":"string"}}}}]},"EntityNameFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"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"]},"entityNameFilter":{"type":"string"}}}]},"EntityTypeFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"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"]}}}]},"EntityViewSearchQueryFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"rootEntity":{"$ref":"#/components/schemas/AliasEntityId"},"relationType":{"type":"string"},"direction":{"type":"string","enum":["FROM","TO"]},"maxLevel":{"type":"integer","format":"int32"},"fetchLastLevelOnly":{"type":"boolean"},"rootStateEntity":{"type":"boolean"},"defaultStateEntity":{"$ref":"#/components/schemas/AliasEntityId"},"entityViewTypes":{"type":"array","items":{"type":"string"}}}}]},"EntityViewTypeFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"entityViewType":{"type":"string","deprecated":true,"writeOnly":true},"entityViewTypes":{"type":"array","items":{"type":"string"}},"entityViewNameFilter":{"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"}}},"FilterPredicateValueString":{"type":"object","properties":{"defaultValue":{"type":"string"},"userValue":{"type":"string"},"dynamicValue":{"$ref":"#/components/schemas/DynamicValueString"}}},"KeyFilter":{"type":"object","properties":{"key":{"$ref":"#/components/schemas/EntityKey"},"valueType":{"type":"string","enum":["STRING","NUMERIC","BOOLEAN","DATE_TIME"]},"predicate":{"oneOf":[{"$ref":"#/components/schemas/BooleanFilterPredicate"},{"$ref":"#/components/schemas/ComplexFilterPredicate"},{"$ref":"#/components/schemas/NumericFilterPredicate"},{"$ref":"#/components/schemas/StringFilterPredicate"}]}}},"KeyFilterPredicate":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"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"}}}]},"RelationsQueryFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"rootEntity":{"$ref":"#/components/schemas/AliasEntityId"},"multiRootEntitiesType":{"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"]},"multiRootEntityIds":{"type":"array","items":{"type":"string"},"uniqueItems":true},"direction":{"type":"string","enum":["FROM","TO"]},"filters":{"type":"array","items":{"$ref":"#/components/schemas/RelationEntityTypeFilter"}},"maxLevel":{"type":"integer","format":"int32"},"fetchLastLevelOnly":{"type":"boolean"},"negate":{"type":"boolean"},"rootStateEntity":{"type":"boolean"},"defaultStateEntity":{"$ref":"#/components/schemas/AliasEntityId"},"multiRoot":{"type":"boolean"}}}]},"SingleEntityFilter":{"allOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"object","properties":{"singleEntity":{"$ref":"#/components/schemas/AliasEntityId"}}}]},"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"}}}]},"ComparisonTsValue":{"type":"object","properties":{"current":{"$ref":"#/components/schemas/TsValue"},"previous":{"$ref":"#/components/schemas/TsValue"}}},"EntityData":{"type":"object","properties":{"entityId":{"$ref":"#/components/schemas/EntityId"},"latest":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TsValue"}}},"timeseries":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/TsValue"}}},"aggLatest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ComparisonTsValue"}}}},"PageDataEntityData":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntityData"},"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}}},"TsValue":{"type":"object","properties":{"ts":{"type":"integer","format":"int64"},"value":{"type":"string"},"count":{"type":"integer","format":"int64"}}},"AvailableEntityKeys":{"type":"object","description":"Contains unique time series and attribute key names discovered from entities matching a query. Used primarily for UI hints such as autocomplete suggestions.","properties":{"entityTypes":{"type":"array","description":"Set of entity types found among the matched entities.","example":["DEVICE","ASSET"],"items":{"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"]},"uniqueItems":true},"timeseries":{"type":"array","items":{"type":"string","example":"temperature","uniqueItems":true},"uniqueItems":true},"attribute":{"type":"array","items":{"type":"string","example":"serialNumber","uniqueItems":true},"uniqueItems":true}},"required":["attribute","entityTypes","timeseries"]},"EntityCountQuery":{"type":"object","description":"A JSON value representing the entity count query. See API call notes above for more details.","properties":{"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/ApiUsageStateFilter"},{"$ref":"#/components/schemas/AssetSearchQueryFilter"},{"$ref":"#/components/schemas/AssetTypeFilter"},{"$ref":"#/components/schemas/DeviceSearchQueryFilter"},{"$ref":"#/components/schemas/DeviceTypeFilter"},{"$ref":"#/components/schemas/EdgeSearchQueryFilter"},{"$ref":"#/components/schemas/EdgeTypeFilter"},{"$ref":"#/components/schemas/EntityListFilter"},{"$ref":"#/components/schemas/EntityNameFilter"},{"$ref":"#/components/schemas/EntityTypeFilter"},{"$ref":"#/components/schemas/EntityViewSearchQueryFilter"},{"$ref":"#/components/schemas/EntityViewTypeFilter"},{"$ref":"#/components/schemas/RelationsQueryFilter"},{"$ref":"#/components/schemas/SingleEntityFilter"}]},"keyFilters":{"type":"array","items":{"$ref":"#/components/schemas/KeyFilter"}}}},"ComplexVersionCreateRequest":{"allOf":[{"$ref":"#/components/schemas/VersionCreateRequest"},{"type":"object","properties":{"syncStrategy":{"type":"string","enum":["MERGE","OVERWRITE"]},"entityTypes":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EntityTypeVersionCreateConfig"}}}}]},"EntityTypeVersionCreateConfig":{"type":"object","properties":{"saveRelations":{"type":"boolean"},"saveAttributes":{"type":"boolean"},"saveCredentials":{"type":"boolean"},"saveCalculatedFields":{"type":"boolean"},"syncStrategy":{"type":"string","enum":["MERGE","OVERWRITE"]},"entityIds":{"type":"array","items":{"type":"string","format":"uuid"}},"allEntities":{"type":"boolean"}}},"SingleEntityVersionCreateRequest":{"allOf":[{"$ref":"#/components/schemas/VersionCreateRequest"},{"type":"object","properties":{"entityId":{"$ref":"#/components/schemas/EntityId"},"config":{"$ref":"#/components/schemas/VersionCreateConfig"}}}]},"VersionCreateConfig":{"type":"object","properties":{"saveRelations":{"type":"boolean"},"saveAttributes":{"type":"boolean"},"saveCredentials":{"type":"boolean"},"saveCalculatedFields":{"type":"boolean"}}},"VersionCreateRequest":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"versionName":{"type":"string"},"branch":{"type":"string"},"type":{"type":"string","enum":["SINGLE_ENTITY","COMPLEX"]}}},"EntityTypeVersionLoadConfig":{"type":"object","properties":{"loadRelations":{"type":"boolean"},"loadAttributes":{"type":"boolean"},"loadCredentials":{"type":"boolean"},"loadCalculatedFields":{"type":"boolean"},"removeOtherEntities":{"type":"boolean"},"findExistingEntityByName":{"type":"boolean"}}},"EntityTypeVersionLoadRequest":{"allOf":[{"$ref":"#/components/schemas/VersionLoadRequest"},{"type":"object","properties":{"entityTypes":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EntityTypeVersionLoadConfig"}},"rollbackOnError":{"type":"boolean"}}}]},"SingleEntityVersionLoadRequest":{"allOf":[{"$ref":"#/components/schemas/VersionLoadRequest"},{"type":"object","properties":{"externalEntityId":{"$ref":"#/components/schemas/EntityId"},"config":{"$ref":"#/components/schemas/VersionLoadConfig"}}}]},"VersionLoadConfig":{"type":"object","properties":{"loadRelations":{"type":"boolean"},"loadAttributes":{"type":"boolean"},"loadCredentials":{"type":"boolean"},"loadCalculatedFields":{"type":"boolean"}}},"VersionLoadRequest":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"versionId":{"type":"string"},"type":{"type":"string","enum":["SINGLE_ENTITY","ENTITY_TYPE"]}}},"EdqsSyncRequest":{"type":"object","properties":{"objectTypes":{"type":"array","items":{"type":"string","enum":["TENANT","TENANT_PROFILE","CUSTOMER","QUEUE","RPC","RULE_CHAIN","OTA_PACKAGE","RESOURCE","EVENT","RULE_NODE","USER","EDGE","WIDGETS_BUNDLE","WIDGET_TYPE","DASHBOARD","DEVICE_PROFILE","DEVICE","DEVICE_CREDENTIALS","ASSET_PROFILE","ASSET","ENTITY_VIEW","ALARM","ENTITY_ALARM","OAUTH2_CLIENT","OAUTH2_DOMAIN","OAUTH2_MOBILE","USER_SETTINGS","NOTIFICATION_TARGET","NOTIFICATION_TEMPLATE","NOTIFICATION_RULE","ALARM_COMMENT","API_USAGE_STATE","QUEUE_STATS","AUDIT_LOG","RELATION","ATTRIBUTE_KV","LATEST_TS_KV"]},"uniqueItems":true}}},"ToCoreEdqsRequest":{"type":"object","properties":{"syncRequest":{"$ref":"#/components/schemas/EdqsSyncRequest"},"apiEnabled":{"type":"boolean"}}},"EdgeSearchQuery":{"type":"object","properties":{"parameters":{"$ref":"#/components/schemas/RelationsSearchParameters","description":"Main search parameters."},"relationType":{"type":"string","description":"Type of the relation between root entity and edge (e.g. 'Contains' or 'Manages')."},"edgeTypes":{"type":"array","description":"Array of edge types to filter the related entities (e.g. 'Silos', 'Stores').","items":{"type":"string"}}}},"Edge":{"type":"object","description":"A JSON value representing the edge.","properties":{"id":{"$ref":"#/components/schemas/EdgeId","description":"JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the edge 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 'assignEdgeToCustomer' to change the Customer Id.","readOnly":true},"rootRuleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.","readOnly":true},"name":{"type":"string","description":"Unique Edge Name in scope of Tenant","example":"Silo_A_Edge"},"type":{"type":"string","description":"Edge type","example":"Silos"},"label":{"type":"string","description":"Label that may be used in widgets","example":"Silo Edge on far field"},"routingKey":{"type":"string","description":"Edge routing key ('username') to authorize on cloud"},"secret":{"type":"string","description":"Edge secret ('password') to authorize on cloud"},"version":{"type":"integer","format":"int64"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}},"required":["name","routingKey","secret","type"]},"EdgeId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID of the entity, time-based UUID v1","example":"784f394c-42b6-435a-983c-b7beff2784f9"},"entityType":{"type":"string","description":"string","enum":["EDGE"],"example":"EDGE"}},"required":["entityType","id"]},"Dashboard":{"type":"object","properties":{"title":{"type":"string","description":"Title of the dashboard."},"image":{"type":"string","description":"Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.","readOnly":true},"mobileHide":{"type":"boolean","description":"Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.","readOnly":true},"mobileOrder":{"type":"integer","format":"int32","description":"Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications","readOnly":true},"configuration":{"$ref":"#/components/schemas/JsonNode","description":"JSON object with main configuration of the dashboard: layouts, widgets, aliases, etc. The JSON structure of the dashboard configuration is quite complex. The easiest way to learn it is to export existing dashboard to JSON."},"name":{"type":"string","description":"Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.","readOnly":true},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ResourceExportData"}},"id":{"$ref":"#/components/schemas/DashboardId","description":"JSON object with the dashboard Id. Specify existing dashboard Id to update the dashboard. Referencing non-existing dashboard id will cause error. Omit this field to create new dashboard."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the dashboard creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.","readOnly":true},"assignedCustomers":{"type":"array","description":"List of assigned customers with their info.","items":{"$ref":"#/components/schemas/ShortCustomerInfo"},"readOnly":true,"uniqueItems":true},"version":{"type":"integer","format":"int64"}},"required":["title"]},"ShortCustomerInfo":{"type":"object","properties":{"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with the customer Id."},"title":{"type":"string","description":"Title of the customer."},"isPublic":{"type":"boolean","writeOnly":true},"public":{"type":"boolean"}}},"Asset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/AssetId","description":"JSON object with the asset Id. Specify this field to update the asset. Referencing non-existing asset Id will cause error. Omit this field to create new asset."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the asset creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.","readOnly":true},"name":{"type":"string","description":"Unique Asset Name in scope of Tenant","example":"Empire State Building"},"type":{"type":"string","description":"Asset type","example":"Building"},"label":{"type":"string","description":"Label that may be used in widgets","example":"NY Building"},"assetProfileId":{"$ref":"#/components/schemas/AssetProfileId","description":"JSON object with Asset Profile Id."},"version":{"type":"integer","format":"int64"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the asset"}},"required":["name"]},"AssetId":{"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":["ASSET"],"example":"ASSET"}},"required":["entityType","id"]},"AssetProfileId":{"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":["ASSET_PROFILE"],"example":"ASSET_PROFILE"}},"required":["entityType","id"]},"BulkImportRequest":{"type":"object","properties":{"file":{"type":"string"},"mapping":{"$ref":"#/components/schemas/Mapping"}}},"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"}}},"Mapping":{"type":"object","properties":{"columns":{"type":"array","items":{"$ref":"#/components/schemas/ColumnMapping"}},"delimiter":{"type":"string"},"update":{"type":"boolean"},"header":{"type":"boolean"}}},"BulkImportResultEdge":{"type":"object","properties":{"created":{"type":"object","properties":{"opaque":{"type":"integer","format":"int32"},"acquire":{"type":"integer","format":"int32"},"release":{"type":"integer","format":"int32","writeOnly":true},"andIncrement":{"type":"integer","format":"int32"},"andDecrement":{"type":"integer","format":"int32"},"plain":{"type":"integer","format":"int32"}}},"updated":{"type":"object","properties":{"opaque":{"type":"integer","format":"int32"},"acquire":{"type":"integer","format":"int32"},"release":{"type":"integer","format":"int32","writeOnly":true},"andIncrement":{"type":"integer","format":"int32"},"andDecrement":{"type":"integer","format":"int32"},"plain":{"type":"integer","format":"int32"}}},"errors":{"type":"object","properties":{"opaque":{"type":"integer","format":"int32"},"acquire":{"type":"integer","format":"int32"},"release":{"type":"integer","format":"int32","writeOnly":true},"andIncrement":{"type":"integer","format":"int32"},"andDecrement":{"type":"integer","format":"int32"},"plain":{"type":"integer","format":"int32"}}},"errorsList":{"type":"array","items":{"type":"string"}}}},"Domain":{"type":"object","description":"A JSON value representing the Domain.","properties":{"id":{"$ref":"#/components/schemas/DomainId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"name":{"type":"string","description":"Domain name. Cannot be empty","minLength":1},"oauth2Enabled":{"type":"boolean","description":"Whether OAuth2 settings are enabled or not"},"propagateToEdge":{"type":"boolean","description":"Whether OAuth2 settings are enabled on Edge or not"}},"required":["name"]},"DomainId":{"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"]},"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"}}}},"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"}]},"CheckPreProvisionedDevicesDeviceProfileProvisionConfiguration":{"allOf":[{"$ref":"#/components/schemas/DeviceProfileProvisionConfiguration"}]},"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"}}}]},"CoapDeviceTypeConfiguration":{"discriminator":{"propertyName":"coapDeviceType"},"properties":{"coapDeviceType":{"type":"string"}},"required":["coapDeviceType"]},"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"}}},"DefaultCoapDeviceTypeConfiguration":{"allOf":[{"$ref":"#/components/schemas/CoapDeviceTypeConfiguration"},{"type":"object","properties":{"transportPayloadTypeConfiguration":{"oneOf":[{"$ref":"#/components/schemas/JsonTransportPayloadConfiguration"},{"$ref":"#/components/schemas/ProtoTransportPayloadConfiguration"}]}}}]},"DefaultDeviceProfileConfiguration":{"allOf":[{"$ref":"#/components/schemas/DeviceProfileConfiguration"}]},"DefaultDeviceProfileTransportConfiguration":{"allOf":[{"$ref":"#/components/schemas/DeviceProfileTransportConfiguration"}]},"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"}}}},"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"]},"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"}}}]},"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"}}},"EfentoCoapDeviceTypeConfiguration":{"allOf":[{"$ref":"#/components/schemas/CoapDeviceTypeConfiguration"}]},"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"}}},"JsonTransportPayloadConfiguration":{"allOf":[{"$ref":"#/components/schemas/TransportPayloadTypeConfiguration"}]},"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"}}}]},"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"}}}]},"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\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==","readOnly":true},"serverCertificate":{"type":"string","description":"Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded","example":"MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+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’t exist, the default value is 0.","example":1,"readOnly":true},"notifIfDisabled":{"type":"boolean","description":"If true, the LwM2M Client stores “Notify” 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 “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” 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}}}]},"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"}}},"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\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==","readOnly":true},"serverCertificate":{"type":"string","description":"Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded","example":"MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+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’t exist, the default value is 0.","example":1,"readOnly":true},"notifIfDisabled":{"type":"boolean","description":"If true, the LwM2M Client stores “Notify” 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 “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” 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}}}]},"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\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==","readOnly":true},"serverCertificate":{"type":"string","description":"Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded","example":"MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+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’t exist, the default value is 0.","example":1,"readOnly":true},"notifIfDisabled":{"type":"boolean","description":"If true, the LwM2M Client stores “Notify” 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 “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” 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}}}]},"RepeatingAlarmConditionSpec":{"allOf":[{"$ref":"#/components/schemas/AlarmConditionSpec"},{"type":"object","properties":{"predicate":{"$ref":"#/components/schemas/FilterPredicateValueInteger"}}}]},"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"}]}}}}]},"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"}}}]},"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"}}}]},"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\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==","readOnly":true},"serverCertificate":{"type":"string","description":"Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded","example":"MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+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’t exist, the default value is 0.","example":1,"readOnly":true},"notifIfDisabled":{"type":"boolean","description":"If true, the LwM2M Client stores “Notify” 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 “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” 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}}}]},"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"]},"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"}}}},"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"]},"Customer":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with the customer Id. Specify this field to update the customer. Referencing non-existing customer Id will cause error. Omit this field to create new customer."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the customer creation, in milliseconds","example":1609459200000,"readOnly":true},"country":{"type":"string","description":"Country","example":"US"},"state":{"type":"string","description":"State","example":"NY"},"city":{"type":"string","description":"City","example":"New York"},"address":{"type":"string","description":"Address Line 1","example":42},"address2":{"type":"string","description":"Address Line 2"},"zip":{"type":"string","description":"Zip code","example":10004},"phone":{"type":"string","description":"Phone number","example":"+1(415)777-7777"},"email":{"type":"string","description":"Email","example":"example@company.com"},"title":{"type":"string","description":"Title of the customer","example":"Company A"},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"version":{"type":"integer","format":"int64"},"name":{"type":"string","description":"Name of the customer. Read-only, duplicated from title for backward compatibility","example":"Company A","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the device"}},"required":["email","title"]},"ClaimRequest":{"type":"object","description":"Claiming request which can optionally contain secret key","properties":{"secretKey":{"type":"string"}}},"Argument":{"type":"object","properties":{"refEntityId":{"$ref":"#/components/schemas/EntityId"},"refDynamicSourceConfiguration":{"oneOf":[{"$ref":"#/components/schemas/CurrentOwnerDynamicSourceConfiguration"},{"$ref":"#/components/schemas/RelationPathQueryDynamicSourceConfiguration"}]},"refEntityKey":{"$ref":"#/components/schemas/ReferencedEntityKey"},"defaultValue":{"type":"string"},"limit":{"type":"integer","format":"int32"},"timeWindow":{"type":"integer","format":"int64"}}},"AttributesImmediateOutputStrategy":{"allOf":[{"$ref":"#/components/schemas/AttributesOutputStrategy"},{"type":"object","properties":{"sendAttributesUpdatedNotification":{"type":"boolean"},"updateAttributesOnlyOnValueChange":{"type":"boolean"},"saveAttribute":{"type":"boolean"},"sendWsUpdate":{"type":"boolean"},"processCfs":{"type":"boolean"}}}]},"AttributesOutput":{"allOf":[{"$ref":"#/components/schemas/Output"},{"type":"object","properties":{"strategy":{"oneOf":[{"$ref":"#/components/schemas/AttributesImmediateOutputStrategy"},{"$ref":"#/components/schemas/AttributesRuleChainOutputStrategy"}]}}}]},"AttributesOutputStrategy":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"AttributesRuleChainOutputStrategy":{"allOf":[{"$ref":"#/components/schemas/AttributesOutputStrategy"}]},"CalculatedField":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CalculatedFieldId","description":"JSON object with the Calculated Field Id. Referencing non-existing Calculated Field Id will cause error."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the calculated field creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"entityId":{"$ref":"#/components/schemas/EntityId"},"type":{"type":"string","enum":["SIMPLE","SCRIPT","GEOFENCING","ALARM","PROPAGATION","RELATED_ENTITIES_AGGREGATION","ENTITY_AGGREGATION"]},"name":{"type":"string","description":"User defined name of the calculated field."},"debugMode":{"type":"boolean","deprecated":true,"writeOnly":true},"debugSettings":{"$ref":"#/components/schemas/DebugSettings","description":"Debug settings object."},"configurationVersion":{"type":"integer","format":"int32","description":"Version of calculated field configuration.","example":0},"configuration":{"$ref":"#/components/schemas/SimpleCalculatedFieldConfiguration"},"version":{"type":"integer","format":"int64"}},"required":["configuration"]},"CalculatedFieldId":{"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":["CALCULATED_FIELD"],"example":"CALCULATED_FIELD"}},"required":["entityType","id"]},"CfArgumentDynamicSourceConfiguration":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"CurrentOwnerDynamicSourceConfiguration":{"allOf":[{"$ref":"#/components/schemas/CfArgumentDynamicSourceConfiguration"}]},"Output":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"name":{"type":"string"},"scope":{"type":"string","enum":["CLIENT_SCOPE","SERVER_SCOPE","SHARED_SCOPE"]},"decimalsByDefault":{"type":"integer","format":"int32"},"strategy":{"$ref":"#/components/schemas/OutputStrategy"},"type":{"type":"string"}},"required":["type"]},"OutputStrategy":{},"ReferencedEntityKey":{"type":"object","properties":{"key":{"type":"string"},"type":{"type":"string","enum":["TS_LATEST","ATTRIBUTE","TS_ROLLING"]},"scope":{"type":"string","enum":["CLIENT_SCOPE","SERVER_SCOPE","SHARED_SCOPE"]}}},"RelationPathLevel":{"type":"object","properties":{"direction":{"type":"string","enum":["FROM","TO"]},"relationType":{"type":"string","minLength":1}},"required":["direction","relationType"]},"RelationPathQueryDynamicSourceConfiguration":{"allOf":[{"$ref":"#/components/schemas/CfArgumentDynamicSourceConfiguration"},{"type":"object","properties":{"levels":{"type":"array","items":{"$ref":"#/components/schemas/RelationPathLevel"}}}}]},"SimpleCalculatedFieldConfiguration":{"type":"object","properties":{"arguments":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Argument"},"minProperties":1},"expression":{"type":"string"},"output":{"oneOf":[{"$ref":"#/components/schemas/AttributesOutput"},{"$ref":"#/components/schemas/TimeSeriesOutput"}]},"useLatestTs":{"type":"boolean"}},"required":["arguments","output"]},"TimeSeriesImmediateOutputStrategy":{"allOf":[{"$ref":"#/components/schemas/TimeSeriesOutputStrategy"},{"type":"object","properties":{"ttl":{"type":"integer","format":"int64"},"saveTimeSeries":{"type":"boolean"},"saveLatest":{"type":"boolean"},"sendWsUpdate":{"type":"boolean"},"processCfs":{"type":"boolean"}}}]},"TimeSeriesOutput":{"allOf":[{"$ref":"#/components/schemas/Output"},{"type":"object","properties":{"strategy":{"oneOf":[{"$ref":"#/components/schemas/TimeSeriesImmediateOutputStrategy"},{"$ref":"#/components/schemas/TimeSeriesRuleChainOutputStrategy"}]}}}]},"TimeSeriesOutputStrategy":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"TimeSeriesRuleChainOutputStrategy":{"allOf":[{"$ref":"#/components/schemas/TimeSeriesOutputStrategy"}]},"ChangePasswordRequest":{"type":"object","description":"Change Password Request","properties":{"currentPassword":{"type":"string","description":"The old password","example":"OldPassword"},"newPassword":{"type":"string","description":"The new password","example":"NewPassword"}}},"AssetSearchQuery":{"type":"object","properties":{"parameters":{"$ref":"#/components/schemas/RelationsSearchParameters","description":"Main search parameters."},"relationType":{"type":"string","description":"Type of the relation between root entity and asset (e.g. 'Contains' or 'Manages')."},"assetTypes":{"type":"array","description":"Array of asset types to filter the related entities (e.g. 'Building', 'Vehicle').","items":{"type":"string"}}}},"AssetProfile":{"type":"object","description":"A JSON value representing the asset profile.","properties":{"id":{"$ref":"#/components/schemas/AssetProfileId","description":"JSON object with the asset profile Id. Specify this field to update the asset profile. Referencing non-existing asset profile Id will cause error. Omit this field to create new asset 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 Asset Profile Name in scope of Tenant.","example":"Building"},"description":{"type":"string","description":"Asset Profile description. "},"image":{"type":"string","description":"Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view. "},"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 asset, including asset updates, 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 asset details."},"defaultQueueName":{"type":"string","description":"Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages."},"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 asset, including asset updates, 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 asset profile is not specified during asset creation."}}},"BulkImportResultAsset":{"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"}}}},"ApiKey":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ApiKeyId","description":"JSON object with the API Key Id. Specify this field to update the API Key. Referencing non-existing API Key Id will cause error. Omit this field to create new API Key."},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the API key cannot be changed.","readOnly":true},"userId":{"$ref":"#/components/schemas/UserId","description":"JSON object with User Id. User Id of the API key cannot be changed."},"expirationTime":{"type":"integer","format":"int64","description":"Expiration time of the API key."},"description":{"type":"string","description":"API Key description.","example":"API Key description","minLength":1},"enabled":{"type":"boolean","description":"Enabled/disabled API key.","example":true},"value":{"type":"string","description":"API key value"},"expired":{"type":"boolean","description":"Indicates if the API key is expired based on current time. Returns false if expirationTime is 0 (no expiry).","example":false,"readOnly":true}},"required":["description","value"]},"AlarmDataPageLink":{"type":"object","properties":{"startTs":{"type":"integer","format":"int64"},"endTs":{"type":"integer","format":"int64"},"timeWindow":{"type":"integer","format":"int64"},"typeList":{"type":"array","items":{"type":"string"}},"statusList":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}},"severityList":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]}},"searchPropagatedAlarms":{"type":"boolean"},"assigneeId":{"$ref":"#/components/schemas/UserId"},"pageSize":{"type":"integer","format":"int32"},"page":{"type":"integer","format":"int32"},"textSearch":{"type":"string"},"sortOrder":{"$ref":"#/components/schemas/EntityDataSortOrder"},"dynamic":{"type":"boolean"}}},"AlarmDataQuery":{"type":"object","description":"A JSON value representing the alarm data query. See API call notes above for more details.","properties":{"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/ApiUsageStateFilter"},{"$ref":"#/components/schemas/AssetSearchQueryFilter"},{"$ref":"#/components/schemas/AssetTypeFilter"},{"$ref":"#/components/schemas/DeviceSearchQueryFilter"},{"$ref":"#/components/schemas/DeviceTypeFilter"},{"$ref":"#/components/schemas/EdgeSearchQueryFilter"},{"$ref":"#/components/schemas/EdgeTypeFilter"},{"$ref":"#/components/schemas/EntityListFilter"},{"$ref":"#/components/schemas/EntityNameFilter"},{"$ref":"#/components/schemas/EntityTypeFilter"},{"$ref":"#/components/schemas/EntityViewSearchQueryFilter"},{"$ref":"#/components/schemas/EntityViewTypeFilter"},{"$ref":"#/components/schemas/RelationsQueryFilter"},{"$ref":"#/components/schemas/SingleEntityFilter"}]},"keyFilters":{"type":"array","items":{"$ref":"#/components/schemas/KeyFilter"}},"pageLink":{"$ref":"#/components/schemas/AlarmDataPageLink"},"entityFields":{"type":"array","items":{"$ref":"#/components/schemas/EntityKey"}},"latestValues":{"type":"array","items":{"$ref":"#/components/schemas/EntityKey"}},"alarmFields":{"type":"array","items":{"$ref":"#/components/schemas/EntityKey"}}}},"AlarmAssignee":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/UserId"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"}}},"AlarmData":{"type":"object","properties":{"entityId":{"$ref":"#/components/schemas/EntityId"},"latest":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TsValue"}}},"id":{"$ref":"#/components/schemas/AlarmId","description":"JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the alarm creation, in milliseconds","example":1634058704567,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id","readOnly":true},"type":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm"},"originator":{"$ref":"#/components/schemas/EntityId","description":"JSON object with alarm originator id"},"severity":{"type":"string","description":"Alarm severity","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"],"example":"CRITICAL"},"acknowledged":{"type":"boolean","description":"Acknowledged","example":true},"cleared":{"type":"boolean","description":"Cleared","example":false},"assigneeId":{"$ref":"#/components/schemas/UserId","description":"Alarm assignee user id"},"startTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm start time, in milliseconds","example":1634058704565},"endTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm end time(last time update), in milliseconds","example":1634111163522},"ackTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm acknowledgement, in milliseconds","example":1634115221948},"clearTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm clearing, in milliseconds","example":1634114528465},"assignTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm assignment, in milliseconds","example":1634115928465},"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"}},"originatorName":{"type":"string","description":"Alarm originator name","example":"Thermostat"},"originatorLabel":{"type":"string","description":"Alarm originator label","example":"Thermostat label"},"originatorDisplayName":{"type":"string","description":"Originator display name","example":"Thermostat"},"assignee":{"$ref":"#/components/schemas/AlarmAssignee","description":"Alarm assignee"},"name":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm","readOnly":true},"status":{"type":"string","description":"status of the Alarm","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"],"example":"ACTIVE_UNACK","readOnly":true},"details":{"$ref":"#/components/schemas/JsonNode"}},"required":["acknowledged","cleared","name","originator","severity","status","type"]},"AlarmId":{"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":["ALARM"],"example":"ALARM"}},"required":["entityType","id"]},"PageDataAlarmData":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AlarmData"},"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}}},"AlarmCountQuery":{"type":"object","description":"A JSON value representing the alarm count query.","properties":{"startTs":{"type":"integer","format":"int64"},"endTs":{"type":"integer","format":"int64"},"timeWindow":{"type":"integer","format":"int64"},"typeList":{"type":"array","items":{"type":"string"}},"statusList":{"type":"array","items":{"type":"string","enum":["ANY","ACTIVE","CLEARED","ACK","UNACK"]}},"severityList":{"type":"array","items":{"type":"string","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"]}},"searchPropagatedAlarms":{"type":"boolean"},"assigneeId":{"$ref":"#/components/schemas/UserId"},"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/ApiUsageStateFilter"},{"$ref":"#/components/schemas/AssetSearchQueryFilter"},{"$ref":"#/components/schemas/AssetTypeFilter"},{"$ref":"#/components/schemas/DeviceSearchQueryFilter"},{"$ref":"#/components/schemas/DeviceTypeFilter"},{"$ref":"#/components/schemas/EdgeSearchQueryFilter"},{"$ref":"#/components/schemas/EdgeTypeFilter"},{"$ref":"#/components/schemas/EntityListFilter"},{"$ref":"#/components/schemas/EntityNameFilter"},{"$ref":"#/components/schemas/EntityTypeFilter"},{"$ref":"#/components/schemas/EntityViewSearchQueryFilter"},{"$ref":"#/components/schemas/EntityViewTypeFilter"},{"$ref":"#/components/schemas/RelationsQueryFilter"},{"$ref":"#/components/schemas/SingleEntityFilter"}]},"keyFilters":{"type":"array","items":{"$ref":"#/components/schemas/KeyFilter"}}}},"Alarm":{"type":"object","properties":{"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id","readOnly":true},"type":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm"},"originator":{"$ref":"#/components/schemas/EntityId","description":"JSON object with alarm originator id"},"severity":{"type":"string","description":"Alarm severity","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"],"example":"CRITICAL"},"acknowledged":{"type":"boolean","description":"Acknowledged","example":true},"cleared":{"type":"boolean","description":"Cleared","example":false},"assigneeId":{"$ref":"#/components/schemas/UserId","description":"Alarm assignee user id"},"startTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm start time, in milliseconds","example":1634058704565},"endTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm end time(last time update), in milliseconds","example":1634111163522},"ackTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm acknowledgement, in milliseconds","example":1634115221948},"clearTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm clearing, in milliseconds","example":1634114528465},"assignTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm assignment, in milliseconds","example":1634115928465},"details":{"$ref":"#/components/schemas/JsonNode"},"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"}},"id":{"$ref":"#/components/schemas/AlarmId","description":"JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the alarm creation, in milliseconds","example":1634058704567,"readOnly":true},"name":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm","readOnly":true},"status":{"type":"string","description":"status of the Alarm","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"],"example":"ACTIVE_UNACK","readOnly":true}},"required":["acknowledged","cleared","name","originator","severity","status","type"]},"AlarmComment":{"type":"object","properties":{"alarmId":{"$ref":"#/components/schemas/AlarmId","description":"JSON object with Alarm id.","readOnly":true},"userId":{"$ref":"#/components/schemas/UserId","description":"JSON object with User id.","readOnly":true},"type":{"type":"string","description":"Defines origination of comment. System type means comment was created by TB. OTHER type means comment was created by user.","enum":["SYSTEM","OTHER"],"example":"SYSTEM/OTHER","readOnly":true},"comment":{"$ref":"#/components/schemas/JsonNode","description":"JSON object with text of comment."},"id":{"$ref":"#/components/schemas/AlarmCommentId","description":"JSON object with the alarm comment Id. Specify this field to update the alarm comment. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.","readOnly":true},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the alarm comment creation, in milliseconds","example":1634058704567,"readOnly":true},"name":{"type":"string","description":"representing comment text","example":"Please take a look","readOnly":true}}},"AlarmCommentId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"AlarmInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/AlarmId","description":"JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the alarm creation, in milliseconds","example":1634058704567,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id","readOnly":true},"type":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm"},"originator":{"$ref":"#/components/schemas/EntityId","description":"JSON object with alarm originator id"},"severity":{"type":"string","description":"Alarm severity","enum":["CRITICAL","MAJOR","MINOR","WARNING","INDETERMINATE"],"example":"CRITICAL"},"acknowledged":{"type":"boolean","description":"Acknowledged","example":true},"cleared":{"type":"boolean","description":"Cleared","example":false},"assigneeId":{"$ref":"#/components/schemas/UserId","description":"Alarm assignee user id"},"startTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm start time, in milliseconds","example":1634058704565},"endTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm end time(last time update), in milliseconds","example":1634111163522},"ackTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm acknowledgement, in milliseconds","example":1634115221948},"clearTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm clearing, in milliseconds","example":1634114528465},"assignTs":{"type":"integer","format":"int64","description":"Timestamp of the alarm assignment, in milliseconds","example":1634115928465},"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"}},"originatorName":{"type":"string","description":"Alarm originator name","example":"Thermostat"},"originatorLabel":{"type":"string","description":"Alarm originator label","example":"Thermostat label"},"originatorDisplayName":{"type":"string","description":"Originator display name","example":"Thermostat"},"assignee":{"$ref":"#/components/schemas/AlarmAssignee","description":"Alarm assignee"},"name":{"type":"string","description":"representing type of the Alarm","example":"High Temperature Alarm","readOnly":true},"status":{"type":"string","description":"status of the Alarm","enum":["ACTIVE_UNACK","ACTIVE_ACK","CLEARED_UNACK","CLEARED_ACK"],"example":"ACTIVE_UNACK","readOnly":true},"details":{"$ref":"#/components/schemas/JsonNode"}},"required":["acknowledged","cleared","name","originator","severity","status","type"]},"AiModel":{"type":"object","properties":{"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object representing the ID of the tenant associated with this AI model","example":"e3c4b7d2-5678-4a9b-0c1d-2e3f4a5b6c7d","readOnly":true},"version":{"type":"integer","format":"int64","default":1,"description":"Version of the AI model record; increments automatically whenever the record is changed","example":7,"readOnly":true},"name":{"type":"string","description":"Display name for this AI model configuration; not the technical model identifier","example":"Fast and cost-efficient model","minLength":1},"configuration":{"description":"Configuration of the AI model","oneOf":[{"$ref":"#/components/schemas/AmazonBedrockChatModelConfig"},{"$ref":"#/components/schemas/AnthropicChatModelConfig"},{"$ref":"#/components/schemas/AzureOpenAiChatModelConfig"},{"$ref":"#/components/schemas/GitHubModelsChatModelConfig"},{"$ref":"#/components/schemas/GoogleAiGeminiChatModelConfig"},{"$ref":"#/components/schemas/GoogleVertexAiGeminiChatModelConfig"},{"$ref":"#/components/schemas/MistralAiChatModelConfig"},{"$ref":"#/components/schemas/OllamaChatModelConfig"},{"$ref":"#/components/schemas/OpenAiChatModelConfig"}]},"id":{"$ref":"#/components/schemas/AiModelId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true}},"required":["name","tenantId","version"]},"AiModelConfig":{"type":"object","discriminator":{"propertyName":"provider"},"properties":{"providerConfig":{"oneOf":[{"$ref":"#/components/schemas/AmazonBedrockProviderConfig"},{"$ref":"#/components/schemas/AnthropicProviderConfig"},{"$ref":"#/components/schemas/AzureOpenAiProviderConfig"},{"$ref":"#/components/schemas/GitHubModelsProviderConfig"},{"$ref":"#/components/schemas/GoogleAiGeminiProviderConfig"},{"$ref":"#/components/schemas/GoogleVertexAiGeminiProviderConfig"},{"$ref":"#/components/schemas/MistralAiProviderConfig"},{"$ref":"#/components/schemas/OllamaProviderConfig"},{"$ref":"#/components/schemas/OpenAiProviderConfig"}]},"provider":{"type":"string"}},"required":["provider"]},"AiModelId":{"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":"Entity type of the AI model","enum":["AI_MODEL"],"example":"AI_MODEL"}},"required":["entityType","id"]},"AiProviderConfig":{},"AmazonBedrockChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AmazonBedrockProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AmazonBedrockProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"AmazonBedrockProviderConfig":{"type":"object","properties":{"region":{"type":"string"},"accessKeyId":{"type":"string"},"secretAccessKey":{"type":"string"}},"required":["accessKeyId","region","secretAccessKey"]},"AnthropicChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AnthropicProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AnthropicProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"AnthropicProviderConfig":{"type":"object","properties":{"apiKey":{"type":"string"}},"required":["apiKey"]},"AzureOpenAiChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AzureOpenAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/AzureOpenAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"AzureOpenAiProviderConfig":{"type":"object","properties":{"endpoint":{"type":"string"},"serviceVersion":{"type":"string"},"apiKey":{"type":"string"}},"required":["apiKey","endpoint"]},"Basic":{"allOf":[{"$ref":"#/components/schemas/OllamaAuth"},{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}}}],"required":["password","username"]},"GitHubModelsChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GitHubModelsProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GitHubModelsProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"GitHubModelsProviderConfig":{"type":"object","properties":{"personalAccessToken":{"type":"string"}},"required":["personalAccessToken"]},"GoogleAiGeminiChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GoogleAiGeminiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GoogleAiGeminiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"GoogleAiGeminiProviderConfig":{"type":"object","properties":{"apiKey":{"type":"string"}},"required":["apiKey"]},"GoogleVertexAiGeminiChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GoogleVertexAiGeminiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/GoogleVertexAiGeminiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"GoogleVertexAiGeminiProviderConfig":{"type":"object","properties":{"fileName":{"type":"string","minLength":1},"projectId":{"type":"string"},"location":{"type":"string"},"serviceAccountKey":{"type":"string"}},"required":["fileName","location","projectId","serviceAccountKey"]},"MistralAiChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/MistralAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/MistralAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"MistralAiProviderConfig":{"type":"object","properties":{"apiKey":{"type":"string"}},"required":["apiKey"]},"None":{"allOf":[{"$ref":"#/components/schemas/OllamaAuth"}]},"OllamaAuth":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"OllamaChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/OllamaProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"contextLength":{"type":"integer","format":"int32"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/OllamaProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"topK":{"type":"integer","format":"int32"},"contextLength":{"type":"integer","format":"int32"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"OllamaProviderConfig":{"type":"object","properties":{"baseUrl":{"type":"string"},"auth":{"oneOf":[{"$ref":"#/components/schemas/Basic"},{"$ref":"#/components/schemas/None"},{"$ref":"#/components/schemas/Token"}]}},"required":["auth","baseUrl"]},"OpenAiChatModelConfig":{"allOf":[{"$ref":"#/components/schemas/AiModelConfig"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/OpenAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},{"$ref":"#/components/schemas/AiChatModelConfigObject"},{"type":"object","properties":{"providerConfig":{"$ref":"#/components/schemas/OpenAiProviderConfig"},"modelId":{"type":"string","minLength":1},"temperature":{"type":"number","format":"double"},"topP":{"type":"number","format":"double","maximum":1},"frequencyPenalty":{"type":"number","format":"double"},"presencePenalty":{"type":"number","format":"double"},"maxOutputTokens":{"type":"integer","format":"int32"},"timeoutSeconds":{"type":"integer","format":"int32"},"maxRetries":{"type":"integer","format":"int32"}}}],"required":["modelId","providerConfig"]},"OpenAiProviderConfig":{"type":"object","properties":{"baseUrl":{"type":"string"},"apiKey":{"type":"string"}}},"Token":{"allOf":[{"$ref":"#/components/schemas/OllamaAuth"},{"type":"object","properties":{"token":{"type":"string"}}}],"required":["token"]},"AiChatModelConfigObject":{"type":"object","properties":{"providerConfig":{"oneOf":[{"$ref":"#/components/schemas/AmazonBedrockProviderConfig"},{"$ref":"#/components/schemas/AnthropicProviderConfig"},{"$ref":"#/components/schemas/AzureOpenAiProviderConfig"},{"$ref":"#/components/schemas/GitHubModelsProviderConfig"},{"$ref":"#/components/schemas/GoogleAiGeminiProviderConfig"},{"$ref":"#/components/schemas/GoogleVertexAiGeminiProviderConfig"},{"$ref":"#/components/schemas/MistralAiProviderConfig"},{"$ref":"#/components/schemas/OllamaProviderConfig"},{"$ref":"#/components/schemas/OpenAiProviderConfig"}]},"modelType":{"type":"string","enum":["CHAT"],"readOnly":true}}},"TbChatRequest":{"type":"object","properties":{"systemMessage":{"type":"string","description":"A system-level instruction that frames the user's input, setting the persona, tone, and constraints for the generated response","example":"You are a helpful assistant. Only output valid JSON."},"userMessage":{"$ref":"#/components/schemas/TbUserMessage","description":"The actual user prompt that will be answered by the AI model"},"chatModelConfig":{"description":"Configuration of the AI chat model that should execute the request","oneOf":[{"$ref":"#/components/schemas/AmazonBedrockChatModelConfig"},{"$ref":"#/components/schemas/AnthropicChatModelConfig"},{"$ref":"#/components/schemas/AzureOpenAiChatModelConfig"},{"$ref":"#/components/schemas/GitHubModelsChatModelConfig"},{"$ref":"#/components/schemas/GoogleAiGeminiChatModelConfig"},{"$ref":"#/components/schemas/GoogleVertexAiGeminiChatModelConfig"},{"$ref":"#/components/schemas/MistralAiChatModelConfig"},{"$ref":"#/components/schemas/OllamaChatModelConfig"},{"$ref":"#/components/schemas/OpenAiChatModelConfig"}]}},"required":["chatModelConfig","userMessage"]},"TbContent":{"discriminator":{"propertyName":"contentType"},"properties":{"contentType":{"type":"string"}},"required":["contentType"]},"TbTextContent":{"allOf":[{"$ref":"#/components/schemas/TbContent"},{"type":"object","properties":{"text":{"type":"string","description":"The text content","example":"What is the weather like in Kyiv today?","minLength":1}}}],"description":"Text-based content part of a user's prompt","required":["text"]},"TbUserMessage":{"type":"object","properties":{"contents":{"type":"array","description":"A list of content parts that make up the complete user prompt","items":{"oneOf":[{"$ref":"#/components/schemas/TbTextContent"}]},"minItems":1}},"required":["contents"]},"Failure":{"allOf":[{"$ref":"#/components/schemas/TbChatResponse"},{"type":"object","properties":{"errorDetails":{"type":"string","description":"A string containing details about the failure"},"status":{"type":"string","example":"FAILURE"}}}]},"Success":{"allOf":[{"$ref":"#/components/schemas/TbChatResponse"},{"type":"object","properties":{"generatedContent":{"type":"string","description":"The text content generated by the model"},"status":{"type":"string","example":"SUCCESS"}}}]},"TbChatResponse":{"type":"object","discriminator":{"propertyName":"status"},"properties":{"status":{"type":"string","description":"Indicates whether the request was successful or not","example":"SUCCESS"}}},"AdminSettings":{"type":"object","description":"A JSON value representing the Mail Settings.","properties":{"id":{"$ref":"#/components/schemas/AdminSettingsId","description":"The Id of the Administration Settings, auto-generated, UUID"},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the settings creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"key":{"type":"string","description":"The Administration Settings key, (e.g. 'general' or 'mail')","example":"mail"},"jsonValue":{"$ref":"#/components/schemas/JsonNode","description":"JSON representation of the Administration Settings value"}}},"AdminSettingsId":{"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":["ADMIN_SETTINGS"],"example":"ADMIN_SETTINGS"}},"required":["entityType","id"]},"AwsSnsSmsProviderConfiguration":{"allOf":[{"$ref":"#/components/schemas/SmsProviderConfiguration"},{"type":"object","properties":{"accessKeyId":{"type":"string","description":"The AWS SNS Access Key ID."},"secretAccessKey":{"type":"string","description":"The AWS SNS Access Key."},"region":{"type":"string","description":"The AWS region."}}}]},"SmppSmsProviderConfiguration":{"allOf":[{"$ref":"#/components/schemas/SmsProviderConfiguration"},{"type":"object","properties":{"protocolVersion":{"type":"string","description":"SMPP version","enum":["3.3, 3.4"]},"host":{"type":"string","description":"SMPP host"},"port":{"type":"integer","format":"int32","description":"SMPP port"},"systemId":{"type":"string","description":"System ID"},"password":{"type":"string","description":"Password"},"systemType":{"type":"string","description":"System type"},"bindType":{"type":"string","description":"TX - Transmitter, RX - Receiver, TRX - Transciever. By default TX is used","enum":["TX","RX","TRX"]},"serviceType":{"type":"string","description":"Service type"},"sourceAddress":{"type":"string","description":"Source address"},"sourceTon":{"type":"string","format":"byte","description":"Source TON (Type of Number). Needed is source address is set. 5 by default.\n0 - Unknown\n1 - International\n2 - National\n3 - Network Specific\n4 - Subscriber Number\n5 - Alphanumeric\n6 - Abbreviated"},"sourceNpi":{"type":"string","format":"byte","description":"Source NPI (Numbering Plan Identification). Needed is source address is set. 0 by default.\n0 - Unknown\n1 - ISDN/telephone numbering plan (E163/E164)\n3 - Data numbering plan (X.121)\n4 - Telex numbering plan (F.69)\n6 - Land Mobile (E.212) =6\n8 - National numbering plan\n9 - Private numbering plan\n10 - ERMES numbering plan (ETSI DE/PS 3 01-3)\n13 - Internet (IP)\n18 - WAP Client Id (to be defined by WAP Forum)"},"destinationTon":{"type":"string","format":"byte","description":"Destination TON (Type of Number). 5 by default.\n0 - Unknown\n1 - International\n2 - National\n3 - Network Specific\n4 - Subscriber Number\n5 - Alphanumeric\n6 - Abbreviated"},"destinationNpi":{"type":"string","format":"byte","description":"Destination NPI (Numbering Plan Identification). 0 by default.\n0 - Unknown\n1 - ISDN/telephone numbering plan (E163/E164)\n3 - Data numbering plan (X.121)\n4 - Telex numbering plan (F.69)\n6 - Land Mobile (E.212) =6\n8 - National numbering plan\n9 - Private numbering plan\n10 - ERMES numbering plan (ETSI DE/PS 3 01-3)\n13 - Internet (IP)\n18 - WAP Client Id (to be defined by WAP Forum)"},"addressRange":{"type":"string","description":"Address range"},"codingScheme":{"type":"string","format":"byte","description":"0 - SMSC Default Alphabet (ASCII for short and long code and to GSM for toll-free, used as default)\n1 - IA5 (ASCII for short and long code, Latin 9 for toll-free (ISO-8859-9))\n2 - Octet Unspecified (8-bit binary)\n3 - Latin 1 (ISO-8859-1)\n4 - Octet Unspecified (8-bit binary)\n5 - JIS (X 0208-1990)\n6 - Cyrillic (ISO-8859-5)\n7 - Latin/Hebrew (ISO-8859-8)\n8 - UCS2/UTF-16 (ISO/IEC-10646)\n9 - Pictogram Encoding\n10 - Music Codes (ISO-2022-JP)\n13 - Extended Kanji JIS (X 0212-1990)\n14 - Korean Graphic Character Set (KS C 5601/KS X 1001)","enum":["0-10","13-14"]}}}],"required":["host","password","port","protocolVersion","systemId"]},"SmsProviderConfiguration":{"discriminator":{"propertyName":"type"},"properties":{"type":{"type":"string"}},"required":["type"]},"TestSmsRequest":{"type":"object","description":"A JSON value representing the Test SMS request.","properties":{"providerConfiguration":{"description":"The SMS provider configuration","oneOf":[{"$ref":"#/components/schemas/AwsSnsSmsProviderConfiguration"},{"$ref":"#/components/schemas/SmppSmsProviderConfiguration"},{"$ref":"#/components/schemas/TwilioSmsProviderConfiguration"}]},"numberTo":{"type":"string","description":"The phone number or other identifier to specify as a recipient of the SMS."},"message":{"type":"string","description":"The test message"}}},"TwilioSmsProviderConfiguration":{"allOf":[{"$ref":"#/components/schemas/SmsProviderConfiguration"},{"type":"object","properties":{"accountSid":{"type":"string","description":"Twilio account Sid."},"accountToken":{"type":"string","description":"Twilio account Token."},"numberFrom":{"type":"string","description":"The number/id of a sender."}}}]},"SecuritySettings":{"type":"object","description":"A JSON value representing the Security Settings.","properties":{"passwordPolicy":{"$ref":"#/components/schemas/UserPasswordPolicy","description":"The user password policy object."},"maxFailedLoginAttempts":{"type":"integer","format":"int32","description":"Maximum number of failed login attempts allowed before user account is locked."},"userLockoutNotificationEmail":{"type":"string","description":"Email to use for notifications about locked users."},"mobileSecretKeyLength":{"type":"integer","format":"int32","description":"Mobile secret key length"},"userActivationTokenTtl":{"type":"integer","format":"int32","description":"TTL in hours for user activation link","maximum":24,"minimum":1},"passwordResetTokenTtl":{"type":"integer","format":"int32","description":"TTL in hours for password reset link","maximum":24,"minimum":1}},"required":["passwordResetTokenTtl","userActivationTokenTtl"]},"UserPasswordPolicy":{"type":"object","properties":{"minimumLength":{"type":"integer","format":"int32","description":"Minimum number of symbols in the password."},"maximumLength":{"type":"integer","format":"int32","description":"Maximum number of symbols in the password."},"minimumUppercaseLetters":{"type":"integer","format":"int32","description":"Minimum number of uppercase letters in the password."},"minimumLowercaseLetters":{"type":"integer","format":"int32","description":"Minimum number of lowercase letters in the password."},"minimumDigits":{"type":"integer","format":"int32","description":"Minimum number of digits in the password."},"minimumSpecialCharacters":{"type":"integer","format":"int32","description":"Minimum number of special in the password."},"allowWhitespaces":{"type":"boolean","description":"Allow whitespaces"},"forceUserToResetPasswordIfNotValid":{"type":"boolean","description":"Force user to update password if existing one does not pass validation"},"passwordExpirationPeriodDays":{"type":"integer","format":"int32","description":"Password expiration period (days). Force expiration of the password."},"passwordReuseFrequencyDays":{"type":"integer","format":"int32","description":"Password reuse frequency (days). Disallow to use the same password for the defined number of days"}}},"RepositorySettings":{"type":"object","description":"A JSON value representing the Repository Settings.","properties":{"repositoryUri":{"type":"string"},"authMethod":{"type":"string","enum":["USERNAME_PASSWORD","PRIVATE_KEY"]},"username":{"type":"string"},"password":{"type":"string"},"privateKeyFileName":{"type":"string"},"privateKey":{"type":"string"},"privateKeyPassword":{"type":"string"},"defaultBranch":{"type":"string"},"readOnly":{"type":"boolean"},"showMergeCommits":{"type":"boolean"},"localOnly":{"type":"boolean"}}},"JwtSettings":{"type":"object","description":"A JSON value representing the JWT Settings.","properties":{"tokenExpirationTime":{"type":"integer","format":"int32","description":"The JWT will expire after seconds.","example":9000},"refreshTokenExpTime":{"type":"integer","format":"int32","description":"The JWT can be refreshed during seconds.","example":604800},"tokenIssuer":{"type":"string","description":"The JWT issuer.","example":"thingsboard.io"},"tokenSigningKey":{"type":"string","description":"The JWT key is used to sing token. Base64 encoded.","example":"dkVTUzU2M2VMWUNwVVltTUhQU2o5SUM0Tkc3M0k2Ykdwcm85QTl6R0RaQ252OFlmVDk2OEptZXBNcndGeExFZg=="}}},"AutoCommitSettings":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AutoVersionCreateConfig"}},"AutoVersionCreateConfig":{"type":"object","properties":{"saveRelations":{"type":"boolean"},"saveAttributes":{"type":"boolean"},"saveCredentials":{"type":"boolean"},"saveCalculatedFields":{"type":"boolean"},"branch":{"type":"string"}}},"BackupCodeTwoFaProviderConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaProviderConfig"},{"type":"object","properties":{"codesQuantity":{"type":"integer","format":"int32","minimum":1}}}]},"EmailTwoFaProviderConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaProviderConfig"},{"type":"object","properties":{"verificationCodeLifetime":{"type":"integer","format":"int32","minimum":1}}}]},"PlatformTwoFaSettings":{"type":"object","description":"Settings value","properties":{"providers":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BackupCodeTwoFaProviderConfig"},{"$ref":"#/components/schemas/EmailTwoFaProviderConfig"},{"$ref":"#/components/schemas/SmsTwoFaProviderConfig"},{"$ref":"#/components/schemas/TotpTwoFaProviderConfig"}]}},"minVerificationCodeSendPeriod":{"type":"integer","format":"int32","minimum":5},"verificationCodeCheckRateLimit":{"type":"string","pattern":"[1-9]\\d*:[1-9]\\d*"},"maxVerificationFailuresBeforeUserLockout":{"type":"integer","format":"int32","minimum":0},"totalAllowedTimeForVerification":{"type":"integer","format":"int32","minimum":60},"enforceTwoFa":{"type":"boolean"},"enforcedUsersFilter":{"$ref":"#/components/schemas/SystemLevelUsersFilter"}},"required":["minVerificationCodeSendPeriod","providers","totalAllowedTimeForVerification"]},"SmsTwoFaProviderConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaProviderConfig"},{"type":"object","properties":{"verificationCodeLifetime":{"type":"integer","format":"int32","minimum":1},"smsVerificationMessageTemplate":{"type":"string","minLength":1,"pattern":".*\\$\\{code}.*"}}}],"required":["smsVerificationMessageTemplate"]},"SystemLevelUsersFilter":{},"TotpTwoFaProviderConfig":{"allOf":[{"$ref":"#/components/schemas/TwoFaProviderConfig"},{"type":"object","properties":{"issuerName":{"type":"string","minLength":1}}}],"required":["issuerName"]},"TwoFaProviderConfig":{"discriminator":{"propertyName":"providerType"},"properties":{"providerType":{"type":"string"}},"required":["providerType"]},"PageDataCalculatedField":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/CalculatedField"},"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}}},"PageDataWidgetsBundle":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/WidgetsBundle"},"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}}},"WidgetType":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/WidgetTypeId","description":"JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Widget Type creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"fqn":{"type":"string","description":"Unique FQN that is used in dashboards as a reference widget type","readOnly":true},"name":{"type":"string","description":"Widget name used in search and UI","readOnly":true},"deprecated":{"type":"boolean","description":"Whether widget type is deprecated.","example":true},"scada":{"type":"boolean","description":"Whether widget type is SCADA symbol.","example":true},"version":{"type":"integer","format":"int64"},"descriptor":{"$ref":"#/components/schemas/JsonNode","description":"Complex JSON object that describes the widget type","readOnly":true}}},"PageDataWidgetTypeInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/WidgetTypeInfo"},"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}}},"WidgetBundleInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EntityId","description":"JSON object with the entity Id. "},"name":{"type":"string","description":"Entity Name"}}},"WidgetTypeInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/WidgetTypeId","description":"JSON object with the Widget Type Id. Specify this field to update the Widget Type. Referencing non-existing Widget Type Id will cause error. Omit this field to create new Widget Type."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Widget Type creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"fqn":{"type":"string","description":"Unique FQN that is used in dashboards as a reference widget type","readOnly":true},"name":{"type":"string","description":"Widget name used in search and UI","readOnly":true},"deprecated":{"type":"boolean","description":"Whether widget type is deprecated.","example":true},"scada":{"type":"boolean","description":"Whether widget type is SCADA symbol.","example":true},"version":{"type":"integer","format":"int64"},"image":{"type":"string","description":"Base64 encoded widget thumbnail","readOnly":true},"description":{"type":"string","description":"Description of the widget type","readOnly":true},"tags":{"type":"array","description":"Tags of the widget type","items":{"type":"string"},"readOnly":true},"widgetType":{"type":"string","description":"Type of the widget (timeseries, latest, control, alarm or static)","readOnly":true},"bundles":{"type":"array","description":"Bundles","items":{"$ref":"#/components/schemas/WidgetBundleInfo"},"readOnly":true}}},"PageDataAlarmInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AlarmInfo"},"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}}},"PageDataUserEmailInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/UserEmailInfo"},"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}}},"UserEmailInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/UserId","description":"User id"},"email":{"type":"string","description":"User email","example":"john@gmail.com"},"firstName":{"type":"string","description":"User first name","example":"John"},"lastName":{"type":"string","description":"User last name","example":"Brown"}}},"UserActivationLink":{"type":"object","properties":{"value":{"type":"string"},"ttlMs":{"type":"integer","format":"int64"}}},"LastVisitedDashboardInfo":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"JSON object with Dashboard id.","readOnly":true},"title":{"type":"string","description":"Title of the dashboard."},"starred":{"type":"boolean","description":"Starred flag"},"lastVisited":{"type":"integer","format":"int64","description":"Last visit timestamp"}}},"StarredDashboardInfo":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"JSON object with Dashboard id.","readOnly":true},"title":{"type":"string","description":"Title of the dashboard."},"starredAt":{"type":"integer","format":"int64","description":"Starred timestamp"}}},"UserDashboardsInfo":{"type":"object","properties":{"last":{"type":"array","description":"List of last visited dashboards.","items":{"$ref":"#/components/schemas/LastVisitedDashboardInfo"},"readOnly":true},"starred":{"type":"array","description":"List of starred dashboards.","items":{"$ref":"#/components/schemas/StarredDashboardInfo"},"readOnly":true}}},"UsageInfo":{"type":"object","properties":{"devices":{"type":"integer","format":"int64"},"maxDevices":{"type":"integer","format":"int64"},"assets":{"type":"integer","format":"int64"},"maxAssets":{"type":"integer","format":"int64"},"customers":{"type":"integer","format":"int64"},"maxCustomers":{"type":"integer","format":"int64"},"users":{"type":"integer","format":"int64"},"maxUsers":{"type":"integer","format":"int64"},"dashboards":{"type":"integer","format":"int64"},"maxDashboards":{"type":"integer","format":"int64"},"edges":{"type":"integer","format":"int64"},"maxEdges":{"type":"integer","format":"int64"},"transportMessages":{"type":"integer","format":"int64"},"maxTransportMessages":{"type":"integer","format":"int64"},"jsExecutions":{"type":"integer","format":"int64"},"tbelExecutions":{"type":"integer","format":"int64"},"maxJsExecutions":{"type":"integer","format":"int64"},"maxTbelExecutions":{"type":"integer","format":"int64"},"emails":{"type":"integer","format":"int64"},"maxEmails":{"type":"integer","format":"int64"},"sms":{"type":"integer","format":"int64"},"maxSms":{"type":"integer","format":"int64"},"smsEnabled":{"type":"boolean"},"alarms":{"type":"integer","format":"int64"},"maxAlarms":{"type":"integer","format":"int64"}}},"PageDataTenant":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Tenant"},"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}}},"PageDataTenantProfile":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/TenantProfile"},"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}}},"EntityInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EntityId","description":"JSON object with the entity Id. "},"name":{"type":"string","description":"Entity Name"}}},"PageDataEntityInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntityInfo"},"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}}},"PageDataTenantInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/TenantInfo"},"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}}},"TenantInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/TenantId","description":"JSON object with the tenant Id. Specify this field to update the tenant. Referencing non-existing tenant Id will cause error. Omit this field to create new tenant."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the tenant creation, in milliseconds","example":1609459200000,"readOnly":true},"country":{"type":"string","description":"Country","example":"US"},"state":{"type":"string","description":"State","example":"NY"},"city":{"type":"string","description":"City","example":"New York"},"address":{"type":"string","description":"Address Line 1","example":42},"address2":{"type":"string","description":"Address Line 2"},"zip":{"type":"string","description":"Zip code","example":10004},"phone":{"type":"string","description":"Phone number","example":"+1(415)777-7777"},"email":{"type":"string","description":"Email","example":"example@company.com"},"title":{"type":"string","description":"Title of the tenant","example":"Company A"},"region":{"type":"string","description":"Geo region of the tenant","example":"North America"},"tenantProfileId":{"$ref":"#/components/schemas/TenantProfileId","description":"JSON object with Tenant Profile Id"},"version":{"type":"integer","format":"int64"},"tenantProfileName":{"type":"string","description":"Tenant Profile name","example":"Default"},"name":{"type":"string","description":"Name of the tenant. Read-only, duplicated from title for backward compatibility","example":"Company A","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the device"}},"required":["title"]},"DashboardInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/DashboardId","description":"JSON object with the dashboard Id. Specify existing dashboard Id to update the dashboard. Referencing non-existing dashboard id will cause error. Omit this field to create new dashboard."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the dashboard creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id. Tenant Id of the dashboard can't be changed.","readOnly":true},"title":{"type":"string","description":"Title of the dashboard."},"image":{"type":"string","description":"Thumbnail picture for rendering of the dashboards in a grid view on mobile devices.","readOnly":true},"assignedCustomers":{"type":"array","description":"List of assigned customers with their info.","items":{"$ref":"#/components/schemas/ShortCustomerInfo"},"readOnly":true,"uniqueItems":true},"mobileHide":{"type":"boolean","description":"Hide dashboard from mobile devices. Useful if the dashboard is not designed for small screens.","readOnly":true},"mobileOrder":{"type":"integer","format":"int32","description":"Order on mobile devices. Useful to adjust sorting of the dashboards for mobile applications","readOnly":true},"version":{"type":"integer","format":"int64"},"name":{"type":"string","description":"Same as title of the dashboard. Read-only field. Update the 'title' to change the 'name' of the dashboard.","readOnly":true}},"required":["title"]},"PageDataDashboardInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/DashboardInfo"},"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}}},"PageDataEntityView":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntityView"},"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}}},"EntityViewInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EntityViewId","description":"JSON object with the Entity View Id. Specify this field to update the Entity View. Referencing non-existing Entity View Id will cause error. Omit this field to create new Entity View."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the Entity View creation, in milliseconds","example":1609459200000,"readOnly":true},"entityId":{"$ref":"#/components/schemas/EntityId","description":"JSON object with the referenced Entity Id (Device or Asset)."},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id. Use 'assignEntityViewToCustomer' to change the Customer Id.","readOnly":true},"name":{"type":"string","description":"Entity View name","example":"A4B72CCDFF33"},"type":{"type":"string","description":"Device Profile Name","example":"Temperature Sensor"},"keys":{"$ref":"#/components/schemas/TelemetryEntityView","description":"Set of telemetry and attribute keys to expose via Entity View."},"startTimeMs":{"type":"integer","format":"int64","description":"Represents the start time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;"},"endTimeMs":{"type":"integer","format":"int64","description":"Represents the end time of the interval that is used to limit access to target device telemetry. Customer will not be able to see entity telemetry that is outside the specified interval;"},"version":{"type":"integer","format":"int64"},"customerTitle":{"type":"string","description":"Title of the Customer that owns the entity view.","readOnly":true},"customerIsPublic":{"type":"boolean","description":"Indicates special 'Public' Customer that is auto-generated to use the entity view on public dashboards.","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the device"}},"required":["entityId","name","type"]},"PageDataEntityViewInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntityViewInfo"},"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}}},"PageDataEdge":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Edge"},"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}}},"EdgeInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EdgeId","description":"JSON object with the Edge Id. Specify this field to update the Edge. Referencing non-existing Edge Id will cause error. Omit this field to create new Edge."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the edge 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 'assignEdgeToCustomer' to change the Customer Id.","readOnly":true},"rootRuleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"JSON object with Root Rule Chain Id. Use 'setEdgeRootRuleChain' to change the Root Rule Chain Id.","readOnly":true},"name":{"type":"string","description":"Unique Edge Name in scope of Tenant","example":"Silo_A_Edge"},"type":{"type":"string","description":"Edge type","example":"Silos"},"label":{"type":"string","description":"Label that may be used in widgets","example":"Silo Edge on far field"},"routingKey":{"type":"string","description":"Edge routing key ('username') to authorize on cloud"},"secret":{"type":"string","description":"Edge secret ('password') to authorize on cloud"},"version":{"type":"integer","format":"int64"},"customerTitle":{"type":"string"},"customerIsPublic":{"type":"boolean"},"additionalInfo":{"$ref":"#/components/schemas/JsonNode"}},"required":["name","routingKey","secret","type"]},"PageDataEdgeInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EdgeInfo"},"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}}},"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}}},"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"]},"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}}},"PageDataAsset":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Asset"},"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}}},"AssetInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/AssetId","description":"JSON object with the asset Id. Specify this field to update the asset. Referencing non-existing asset Id will cause error. Omit this field to create new asset."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the asset creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id. Use 'assignAssetToCustomer' to change the Customer Id.","readOnly":true},"name":{"type":"string","description":"Unique Asset Name in scope of Tenant","example":"Empire State Building"},"type":{"type":"string","description":"Asset type","example":"Building"},"label":{"type":"string","description":"Label that may be used in widgets","example":"NY Building"},"assetProfileId":{"$ref":"#/components/schemas/AssetProfileId","description":"JSON object with Asset Profile Id."},"version":{"type":"integer","format":"int64"},"customerTitle":{"type":"string","description":"Title of the Customer that owns the asset.","readOnly":true},"customerIsPublic":{"type":"boolean","description":"Indicates special 'Public' Customer that is auto-generated to use the assets on public dashboards.","readOnly":true},"assetProfileName":{"type":"string","description":"Name of the corresponding Asset Profile.","readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional parameters of the asset"}},"required":["name"]},"PageDataAssetInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AssetInfo"},"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}}},"PageDataRuleChain":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/RuleChain"},"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}}},"RuleChainOutputLabelsUsage":{"type":"object","properties":{"ruleChainId":{"$ref":"#/components/schemas/RuleChainId","description":"Rule Chain Id","readOnly":true},"ruleNodeId":{"$ref":"#/components/schemas/RuleNodeId","description":"Rule Node Id","readOnly":true},"ruleChainName":{"type":"string","description":"Rule Chain Name","readOnly":true},"ruleNodeName":{"type":"string","description":"Rule Node Name","readOnly":true},"labels":{"type":"array","description":"Output labels","items":{"type":"string"},"readOnly":true,"uniqueItems":true}},"required":["labels","ruleChainId","ruleChainName","ruleNodeId","ruleNodeName"]},"Rpc":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/RpcId","description":"JSON object with the rpc Id. Referencing non-existing rpc Id will cause error."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the rpc creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id.","readOnly":true},"deviceId":{"$ref":"#/components/schemas/DeviceId","description":"JSON object with Device Id.","readOnly":true},"expirationTime":{"type":"integer","format":"int64","description":"Expiration time of the request.","readOnly":true},"request":{"$ref":"#/components/schemas/JsonNode","description":"The request body that will be used to send message to device.","readOnly":true},"response":{"$ref":"#/components/schemas/JsonNode","description":"The response from the device.","readOnly":true},"status":{"type":"string","description":"The current status of the RPC call.","enum":["QUEUED","SENT","DELIVERED","SUCCESSFUL","TIMEOUT","EXPIRED","FAILED","DELETED"],"readOnly":true},"additionalInfo":{"$ref":"#/components/schemas/JsonNode","description":"Additional info used in the rule engine to process the updates to the RPC state.","readOnly":true}}},"RpcId":{"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":["RPC"],"example":"RPC"}},"required":["entityType","id"]},"PageDataTbResourceInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/TbResourceInfo"},"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}}},"LwM2mInstance":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"LwM2M Instance id.","example":0},"resources":{"type":"array","description":"LwM2M Resource observe.","items":{"$ref":"#/components/schemas/LwM2mResourceObserve"}}}},"LwM2mObject":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"LwM2M Object id.","example":19},"keyId":{"type":"string","description":"LwM2M Object key id.","example":"19_1.0"},"name":{"type":"string","description":"LwM2M Object name.","example":"BinaryAppDataContainer"},"multiple":{"type":"boolean","description":"LwM2M Object multiple.","example":true},"mandatory":{"type":"boolean","description":"LwM2M Object mandatory.","example":false},"instances":{"type":"array","description":"LwM2M Object instances.","items":{"$ref":"#/components/schemas/LwM2mInstance"}}}},"LwM2mResourceObserve":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"LwM2M Resource Observe id.","example":0},"name":{"type":"string","description":"LwM2M Resource Observe name.","example":"Data"},"observe":{"type":"boolean","description":"LwM2M Resource Observe observe.","example":false},"attribute":{"type":"boolean","description":"LwM2M Resource Observe attribute.","example":false},"telemetry":{"type":"boolean","description":"LwM2M Resource Observe telemetry.","example":false},"keyName":{"type":"string","description":"LwM2M Resource Observe key name.","example":"data"}}},"PageDataQueue":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Queue"},"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}}},"QueueStats":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/QueueStatsId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"queueName":{"type":"string"},"serviceId":{"type":"string"}}},"QueueStatsId":{"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":["QUEUE_STATS"],"example":"QUEUE_STATS"}},"required":["entityType","id"]},"PageDataQueueStats":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/QueueStats"},"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}}},"MultiValueMapStringString":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"properties":{"all":{"type":"object","additionalProperties":{"type":"string"},"writeOnly":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}}},"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"}}},"OAuth2ClientInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/OAuth2ClientId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"title":{"type":"string","description":"Oauth2 client registration title (e.g. My google)"},"providerName":{"type":"string","description":"Oauth2 client provider name (e.g. Google)"},"platforms":{"type":"array","description":"List of platforms for which usage of the OAuth2 client is allowed (empty for all allowed)","items":{"type":"string","enum":["WEB","ANDROID","IOS"]}},"name":{"type":"string","readOnly":true}}},"PageDataOAuth2ClientInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/OAuth2ClientInfo"},"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}}},"Notification":{"type":"object","properties":{"requestId":{"$ref":"#/components/schemas/NotificationRequestId"},"recipientId":{"$ref":"#/components/schemas/UserId"},"type":{"type":"string","enum":["GENERAL","ALARM","DEVICE_ACTIVITY","ENTITY_ACTION","ALARM_COMMENT","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","ALARM_ASSIGNMENT","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","ENTITIES_LIMIT_INCREASE_REQUEST","API_USAGE_LIMIT","RULE_NODE","RATE_LIMITS","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]},"deliveryMethod":{"type":"string","enum":["WEB","EMAIL","SMS","SLACK","MICROSOFT_TEAMS","MOBILE_APP"]},"subject":{"type":"string"},"text":{"type":"string"},"additionalConfig":{"$ref":"#/components/schemas/JsonNode"},"info":{"$ref":"#/components/schemas/NotificationInfo"},"status":{"type":"string","enum":["SENT","READ"]},"id":{"$ref":"#/components/schemas/NotificationId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true}}},"NotificationId":{"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":["NOTIFICATION"],"example":"NOTIFICATION"}},"required":["entityType","id"]},"PageDataNotification":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Notification"},"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}}},"PageDataNotificationTemplate":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/NotificationTemplate"},"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}}},"PageDataNotificationTarget":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/NotificationTarget"},"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}}},"NotificationRuleInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/NotificationRuleId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"name":{"type":"string","minLength":1},"enabled":{"type":"boolean"},"templateId":{"$ref":"#/components/schemas/NotificationTemplateId"},"triggerType":{"type":"string","enum":["ENTITY_ACTION","ALARM","ALARM_COMMENT","ALARM_ASSIGNMENT","DEVICE_ACTIVITY","RULE_ENGINE_COMPONENT_LIFECYCLE_EVENT","EDGE_CONNECTION","EDGE_COMMUNICATION_FAILURE","NEW_PLATFORM_VERSION","ENTITIES_LIMIT","API_USAGE_LIMIT","RATE_LIMITS","TASK_PROCESSING_FAILURE","RESOURCES_SHORTAGE"]},"triggerConfig":{"oneOf":[{"$ref":"#/components/schemas/AlarmAssignmentNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/AlarmCommentNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/AlarmNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/ApiUsageLimitNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/DeviceActivityNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EdgeCommunicationFailureNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EdgeConnectionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EntitiesLimitNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/EntityActionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/NewPlatformVersionNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/RateLimitsNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/ResourcesShortageNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/RuleEngineComponentLifecycleEventNotificationRuleTriggerConfig"},{"$ref":"#/components/schemas/TaskProcessingFailureNotificationRuleTriggerConfig"}]},"recipientsConfig":{"oneOf":[{"$ref":"#/components/schemas/EscalatedNotificationRuleRecipientsConfig"}]},"additionalConfig":{"$ref":"#/components/schemas/NotificationRuleConfig"},"templateName":{"type":"string"},"deliveryMethods":{"type":"array","items":{"type":"string","enum":["WEB","EMAIL","SMS","SLACK","MICROSOFT_TEAMS","MOBILE_APP"]}}},"required":["name","recipientsConfig","templateId","triggerConfig","triggerType"]},"PageDataNotificationRuleInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/NotificationRuleInfo"},"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}}},"NotificationRequestInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/NotificationRequestId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"targets":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1},"templateId":{"$ref":"#/components/schemas/NotificationTemplateId"},"template":{"$ref":"#/components/schemas/NotificationTemplate"},"info":{"$ref":"#/components/schemas/NotificationInfo"},"additionalConfig":{"$ref":"#/components/schemas/NotificationRequestConfig"},"originatorEntityId":{"$ref":"#/components/schemas/EntityId"},"ruleId":{"$ref":"#/components/schemas/NotificationRuleId"},"status":{"type":"string","enum":["PROCESSING","SENT","SCHEDULED"]},"stats":{"$ref":"#/components/schemas/NotificationRequestStats"},"templateName":{"type":"string"},"deliveryMethods":{"type":"array","items":{"type":"string","enum":["WEB","EMAIL","SMS","SLACK","MICROSOFT_TEAMS","MOBILE_APP"]}}},"required":["targets"]},"PageDataNotificationRequestInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/NotificationRequestInfo"},"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}}},"CaptchaClientParams":{"type":"object","properties":{"captchaSiteKey":{"type":"string"},"captchaVersion":{"type":"string"},"captchaAction":{"type":"string"}}},"LoginMobileInfo":{"type":"object","properties":{"oAuth2ClientLoginInfos":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2ClientLoginInfo"}},"storeInfo":{"$ref":"#/components/schemas/StoreInfo"},"versionInfo":{"$ref":"#/components/schemas/MobileAppVersionInfo"}}},"UserMobileInfo":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"},"storeInfo":{"$ref":"#/components/schemas/StoreInfo"},"versionInfo":{"$ref":"#/components/schemas/MobileAppVersionInfo"},"homeDashboardInfo":{"$ref":"#/components/schemas/HomeDashboardInfo"},"pages":{"$ref":"#/components/schemas/JsonNode"}}},"MobileAppBundleInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/MobileAppBundleId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"title":{"type":"string","description":"Application bundle title. Cannot be empty","minLength":1},"description":{"type":"string","description":"Application bundle description."},"androidAppId":{"$ref":"#/components/schemas/MobileAppId","description":"Android application id"},"iosAppId":{"$ref":"#/components/schemas/MobileAppId","description":"IOS application id"},"layoutConfig":{"$ref":"#/components/schemas/MobileLayoutConfig","description":"Application layout configuration"},"oauth2Enabled":{"type":"boolean","description":"Whether OAuth2 settings are enabled or not"},"androidPkgName":{"type":"string","description":"Android package name"},"iosPkgName":{"type":"string","description":"IOS package name"},"oauth2ClientInfos":{"type":"array","description":"List of available oauth2 clients","items":{"$ref":"#/components/schemas/OAuth2ClientInfo"}},"qrCodeEnabled":{"type":"boolean","description":"Indicates if qr code is available for bundle"},"name":{"type":"string","description":"Mobile app bundle title","example":"My main application","readOnly":true}},"required":["title"]},"PageDataMobileAppBundleInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/MobileAppBundleInfo"},"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}}},"PageDataMobileApp":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/MobileApp"},"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}}},"LwM2MServerSecurityConfigDefault":{"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\n+44sgk3c8g0LotfMpLlZJPhPwJ6ipXV+O1r7IZUjBs3LNA==","readOnly":true},"serverCertificate":{"type":"string","description":"Server Public Key for 'Security' mode (DTLS): X509. Format: base64 encoded","example":"MMIICODCCAd6gAwIBAgIUI88U1zowOdrxDK/dOV+36gJxI2MwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMCVUs\nxEjAQBgNVBAgTCUt5aXYgY2l0eTENMAsGA1UEBxMES3lpdjEUMBIGA1UEChMLVGhpbmdzYm9hcmQxFzAVBgNVBAsMDkRFVkVMT1BFUl9URVNUMRkwFwYDVQQDDBBpbnRlcm1lZGlhdGVfY2EwMB4XDTIyMDEwOTEzMDMwMFoXDTI3MDEwODEzMDMwMFowFDESMBAGA1UEAxM\nJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUO3vBo/JTv0eooY7XHiKAIVDoWKFqtrU7C6q8AIKqpLcqhCdW+haFeBOH3PjY6EwaWkY04Bir4oanU0s7tz2uKOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/\nBAIwADAdBgNVHQ4EFgQUEjc3Q4a0TxzP/3x3EV4fHxYUg0YwHwYDVR0jBBgwFoAUuSquGycMU6Q0SYNcbtSkSD3TfH0wLwYDVR0RBCgwJoIVbG9jYWxob3N0LmxvY2FsZG9tYWlugglsb2NhbGhvc3SCAiAtMAoGCCqGSM49BAMCA0gAMEUCIQD7dbZObyUaoDiNbX+9fUNp\nAWrD7N7XuJUwZ9FcN75R3gIgb2RNjDkHoyUyF1YajwkBk+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’t exist, the default value is 0.","example":1,"readOnly":true},"notifIfDisabled":{"type":"boolean","description":"If true, the LwM2M Client stores “Notify” 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 “Notify” operations to the Server. If false, the LwM2M Client discards all the “Notify” 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},"securityHost":{"type":"string","description":"Host for 'Security' mode (DTLS)","example":"0.0.0.0","readOnly":true},"securityPort":{"type":"integer","format":"int32","description":"Port for 'Security' mode (DTLS): Lwm2m Server or Bootstrap Server","example":5686,"readOnly":true}}},"DummyJobConfiguration":{"allOf":[{"$ref":"#/components/schemas/JobConfiguration"},{"type":"object","properties":{"taskProcessingTimeMs":{"type":"integer","format":"int64"},"successfulTasksCount":{"type":"integer","format":"int32"},"failedTasksCount":{"type":"integer","format":"int32"},"permanentlyFailedTasksCount":{"type":"integer","format":"int32"},"errors":{"type":"array","items":{"type":"string"}},"retries":{"type":"integer","format":"int32"},"taskProcessingTimeoutMs":{"type":"integer","format":"int64"},"generalError":{"type":"string"},"submittedTasksBeforeGeneralError":{"type":"integer","format":"int32"}}}],"required":["tasksKey"]},"DummyJobResult":{"allOf":[{"$ref":"#/components/schemas/JobResult"}]},"DummyTaskFailure":{"type":"object","properties":{"error":{"type":"string"},"number":{"type":"integer","format":"int32"},"failAlways":{"type":"boolean"}}},"DummyTaskResult":{"allOf":[{"$ref":"#/components/schemas/TaskResult"},{"type":"object","properties":{"failure":{"$ref":"#/components/schemas/DummyTaskFailure"}}}]},"Job":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/JobId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"type":{"type":"string","enum":["DUMMY"]},"key":{"type":"string","minLength":1},"entityId":{"$ref":"#/components/schemas/EntityId"},"entityName":{"type":"string"},"status":{"type":"string","enum":["QUEUED","PENDING","RUNNING","COMPLETED","FAILED","CANCELLED"]},"configuration":{"oneOf":[{"$ref":"#/components/schemas/DummyJobConfiguration"}]},"result":{"oneOf":[{"$ref":"#/components/schemas/DummyJobResult"}]}},"required":["configuration","entityId","key","result","status","tenantId","type"]},"JobConfiguration":{"type":"object","discriminator":{"propertyName":"type"},"properties":{"tasksKey":{"type":"string","minLength":1},"toReprocess":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DummyTaskResult"}]}},"type":{"type":"string"}},"required":["tasksKey","type"]},"JobId":{"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":["JOB"],"example":"JOB"}},"required":["entityType","id"]},"JobResult":{"type":"object","discriminator":{"propertyName":"jobType"},"properties":{"successfulCount":{"type":"integer","format":"int32"},"failedCount":{"type":"integer","format":"int32"},"discardedCount":{"type":"integer","format":"int32"},"totalCount":{"type":"integer","format":"int32"},"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/DummyTaskResult"}]}},"generalError":{"type":"string"},"startTs":{"type":"integer","format":"int64"},"finishTs":{"type":"integer","format":"int64"},"cancellationTs":{"type":"integer","format":"int64"},"jobType":{"type":"string"}},"required":["jobType"]},"PageDataJob":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Job"},"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}}},"TaskResult":{"type":"object","discriminator":{"propertyName":"jobType"},"properties":{"key":{"type":"string"},"success":{"type":"boolean"},"discarded":{"type":"boolean"},"finishTs":{"type":"integer","format":"int64"},"jobType":{"type":"string"}},"required":["jobType"]},"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"}}},"EntityVersion":{"type":"object","properties":{"timestamp":{"type":"integer","format":"int64"},"id":{"type":"string"},"name":{"type":"string"},"author":{"type":"string"}}},"PageDataEntityVersion":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntityVersion"},"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}}},"VersionCreationResult":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/EntityVersion"},"added":{"type":"integer","format":"int32"},"modified":{"type":"integer","format":"int32"},"removed":{"type":"integer","format":"int32"},"error":{"type":"string"},"done":{"type":"boolean"}}},"EntityDataInfo":{"type":"object","properties":{"hasRelations":{"type":"boolean"},"hasAttributes":{"type":"boolean"},"hasCredentials":{"type":"boolean"},"hasCalculatedFields":{"type":"boolean"}}},"VersionedEntityInfo":{"type":"object","properties":{"externalId":{"$ref":"#/components/schemas/EntityId"}}},"EntityLoadError":{"type":"object","properties":{"type":{"type":"string"},"source":{"$ref":"#/components/schemas/EntityId"},"target":{"$ref":"#/components/schemas/EntityId"},"message":{"type":"string"}}},"EntityTypeLoadResult":{"type":"object","properties":{"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"]},"created":{"type":"integer","format":"int32"},"updated":{"type":"integer","format":"int32"},"deleted":{"type":"integer","format":"int32"}}},"VersionLoadResult":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/EntityTypeLoadResult"}},"error":{"$ref":"#/components/schemas/EntityLoadError"},"done":{"type":"boolean"}}},"AttributeExportData":{"type":"object","properties":{"key":{"type":"string"},"lastUpdateTs":{"type":"integer","format":"int64"},"booleanValue":{"type":"boolean"},"strValue":{"type":"string"},"longValue":{"type":"integer","format":"int64"},"doubleValue":{"type":"number","format":"double"},"jsonValue":{"type":"string"}}},"DeviceExportData":{"allOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Device"},"credentials":{"$ref":"#/components/schemas/DeviceCredentials"}}}]},"EntityDataDiff":{"type":"object","properties":{"currentVersion":{"oneOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"$ref":"#/components/schemas/DeviceExportData"},{"$ref":"#/components/schemas/OtaPackageExportData"},{"$ref":"#/components/schemas/RuleChainExportData"},{"$ref":"#/components/schemas/WidgetTypeExportData"},{"$ref":"#/components/schemas/WidgetsBundleExportData"}]},"otherVersion":{"oneOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"$ref":"#/components/schemas/DeviceExportData"},{"$ref":"#/components/schemas/OtaPackageExportData"},{"$ref":"#/components/schemas/RuleChainExportData"},{"$ref":"#/components/schemas/WidgetTypeExportData"},{"$ref":"#/components/schemas/WidgetsBundleExportData"}]}}},"EntityExportDataObject":{"type":"object","discriminator":{"propertyName":"entityType"},"properties":{"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"]},"entity":{},"relations":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}},"attributes":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/AttributeExportData"}}},"calculatedFields":{"type":"array","items":{"$ref":"#/components/schemas/CalculatedField"}}}},"OtaPackageExportData":{"allOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/OtaPackage"}}}]},"RuleChainExportData":{"allOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/RuleChain"},"metaData":{"$ref":"#/components/schemas/RuleChainMetaData"}}}]},"WidgetTypeExportData":{"allOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/WidgetTypeDetails"}}}]},"WidgetsBundleExportData":{"allOf":[{"$ref":"#/components/schemas/EntityExportDataObject"},{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/WidgetsBundle"},"widgets":{"type":"array","items":{"type":"object"}},"fqns":{"type":"array","items":{"type":"string"}}}}]},"BranchInfo":{"type":"object","properties":{"name":{"type":"string"},"default":{"type":"boolean"}}},"EdqsState":{"type":"object","properties":{"edqsReady":{"type":"boolean"},"syncStatus":{"type":"string","enum":["REQUESTED","STARTED","FINISHED","FAILED"]},"apiMode":{"type":"string","enum":["ENABLED","AUTO_ENABLED","DISABLED","AUTO_DISABLED"]}}},"EdgeEvent":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EdgeEventId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"seqId":{"type":"integer","format":"int64"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"edgeId":{"$ref":"#/components/schemas/EdgeId"},"action":{"type":"string","enum":["ADDED","UPDATED","DELETED","POST_ATTRIBUTES","ATTRIBUTES_UPDATED","ATTRIBUTES_DELETED","TIMESERIES_UPDATED","CREDENTIALS_UPDATED","ASSIGNED_TO_CUSTOMER","UNASSIGNED_FROM_CUSTOMER","RELATION_ADD_OR_UPDATE","RELATION_DELETED","RPC_CALL","ALARM_ACK","ALARM_CLEAR","ALARM_DELETE","ALARM_ASSIGNED","ALARM_UNASSIGNED","ADDED_COMMENT","UPDATED_COMMENT","DELETED_COMMENT","ASSIGNED_TO_EDGE","UNASSIGNED_FROM_EDGE","CREDENTIALS_REQUEST","ENTITY_MERGE_REQUEST"]},"entityId":{"type":"string","format":"uuid"},"uid":{"type":"string"},"type":{"type":"string","enum":["DASHBOARD","ASSET","DEVICE","DEVICE_PROFILE","ASSET_PROFILE","ENTITY_VIEW","ALARM","ALARM_COMMENT","RULE_CHAIN","RULE_CHAIN_METADATA","EDGE","USER","CUSTOMER","RELATION","TENANT","TENANT_PROFILE","WIDGETS_BUNDLE","WIDGET_TYPE","ADMIN_SETTINGS","OTA_PACKAGE","QUEUE","NOTIFICATION_RULE","NOTIFICATION_TARGET","NOTIFICATION_TEMPLATE","TB_RESOURCE","OAUTH2_CLIENT","DOMAIN","CALCULATED_FIELD","AI_MODEL"]},"body":{"$ref":"#/components/schemas/JsonNode"}}},"EdgeEventId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"PageDataEdgeEvent":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EdgeEvent"},"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}}},"EdgeInstructions":{"type":"object","properties":{"instructions":{"type":"string","description":"Markdown with install/upgrade instructions"}}},"DomainInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/DomainId"},"createdTime":{"type":"integer","format":"int64","description":"Entity creation timestamp in milliseconds since Unix epoch","example":1746028547220,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id"},"name":{"type":"string","description":"Domain name. Cannot be empty","minLength":1},"oauth2Enabled":{"type":"boolean","description":"Whether OAuth2 settings are enabled or not"},"propagateToEdge":{"type":"boolean","description":"Whether OAuth2 settings are enabled on Edge or not"},"oauth2ClientInfos":{"type":"array","description":"List of available oauth2 clients","items":{"$ref":"#/components/schemas/OAuth2ClientInfo"}}},"required":["name"]},"PageDataDomainInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/DomainInfo"},"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}}},"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"]}}},"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}}},"PageDataCustomer":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/Customer"},"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}}},"ComponentDescriptor":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ComponentDescriptorId","description":"JSON object with the descriptor Id. Specify existing descriptor id to update the descriptor. Referencing non-existing descriptor Id will cause error. Omit this field to create new descriptor."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the descriptor creation, in milliseconds","example":1609459200000,"readOnly":true},"type":{"type":"string","description":"Type of the Rule Node","enum":["ENRICHMENT","FILTER","TRANSFORMATION","ACTION","EXTERNAL","FLOW"],"readOnly":true},"scope":{"type":"string","description":"Scope of the Rule Node. Always set to 'TENANT', since no rule chains on the 'SYSTEM' level yet.","enum":["TENANT"],"example":"TENANT","readOnly":true},"clusteringMode":{"type":"string","description":"Clustering mode of the RuleNode. This mode represents the ability to start Rule Node in multiple microservices.","enum":["USER_PREFERENCE","ENABLED","SINGLETON"],"example":"ENABLED","readOnly":true},"name":{"type":"string","description":"Name of the Rule Node. Taken from the @RuleNode annotation.","example":"Custom Rule Node","readOnly":true},"clazz":{"type":"string","description":"Full name of the Java class that implements the Rule Engine Node interface.","example":"com.mycompany.CustomRuleNode","readOnly":true},"configurationVersion":{"type":"integer","format":"int32","description":"Rule node configuration version. By default, this value is 0. If the rule node is a versioned node, this value might be greater than 0.","readOnly":true},"actions":{"type":"string","description":"Rule Node Actions. Deprecated. Always null.","readOnly":true},"hasQueueName":{"type":"boolean","description":"Indicates that the RuleNode supports queue name configuration.","example":true,"readOnly":true},"configurationDescriptor":{"$ref":"#/components/schemas/JsonNode"}}},"ComponentDescriptorId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"CalculatedFieldInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CalculatedFieldId","description":"JSON object with the Calculated Field Id. Referencing non-existing Calculated Field Id will cause error."},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the calculated field creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId"},"entityId":{"$ref":"#/components/schemas/EntityId"},"type":{"type":"string","enum":["SIMPLE","SCRIPT","GEOFENCING","ALARM","PROPAGATION","RELATED_ENTITIES_AGGREGATION","ENTITY_AGGREGATION"]},"name":{"type":"string","description":"User defined name of the calculated field."},"debugMode":{"type":"boolean","deprecated":true,"writeOnly":true},"debugSettings":{"$ref":"#/components/schemas/DebugSettings","description":"Debug settings object."},"configurationVersion":{"type":"integer","format":"int32","description":"Version of calculated field configuration.","example":0},"configuration":{"$ref":"#/components/schemas/SimpleCalculatedFieldConfiguration"},"version":{"type":"integer","format":"int64"},"entityName":{"type":"string"}},"required":["configuration"]},"PageDataCalculatedFieldInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/CalculatedFieldInfo"},"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}}},"PageDataString":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"type":"string"},"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}}},"TwoFaProviderInfo":{"type":"object","properties":{"type":{"type":"string","enum":["TOTP","SMS","EMAIL","BACKUP_CODE"]},"isDefault":{"type":"boolean","writeOnly":true},"contact":{"type":"string"},"minVerificationCodeSendPeriod":{"type":"integer","format":"int32"},"default":{"type":"boolean"}}},"AuditLog":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/AuditLogId","description":"JSON object with the auditLog Id"},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the auditLog creation, in milliseconds","example":1609459200000,"readOnly":true},"tenantId":{"$ref":"#/components/schemas/TenantId","description":"JSON object with Tenant Id","readOnly":true},"customerId":{"$ref":"#/components/schemas/CustomerId","description":"JSON object with Customer Id","readOnly":true},"entityId":{"$ref":"#/components/schemas/EntityId","description":"JSON object with Entity id","readOnly":true},"entityName":{"type":"string","description":"Name of the logged entity","example":"Thermometer","readOnly":true},"userId":{"$ref":"#/components/schemas/UserId","description":"JSON object with User id.","readOnly":true},"userName":{"type":"string","description":"Unique user name(email) of the user that performed some action on logged entity","example":"tenant@thingsboard.org","readOnly":true},"actionType":{"type":"string","description":"String represented Action type","enum":["ADDED","DELETED","UPDATED","ATTRIBUTES_UPDATED","ATTRIBUTES_DELETED","TIMESERIES_UPDATED","TIMESERIES_DELETED","RPC_CALL","CREDENTIALS_UPDATED","ASSIGNED_TO_CUSTOMER","UNASSIGNED_FROM_CUSTOMER","ACTIVATED","SUSPENDED","CREDENTIALS_READ","ATTRIBUTES_READ","RELATION_ADD_OR_UPDATE","RELATION_DELETED","RELATIONS_DELETED","REST_API_RULE_ENGINE_CALL","ALARM_ACK","ALARM_CLEAR","ALARM_DELETE","ALARM_ASSIGNED","ALARM_UNASSIGNED","LOGIN","LOGOUT","LOCKOUT","ASSIGNED_FROM_TENANT","ASSIGNED_TO_TENANT","PROVISION_SUCCESS","PROVISION_FAILURE","ASSIGNED_TO_EDGE","UNASSIGNED_FROM_EDGE","ADDED_COMMENT","UPDATED_COMMENT","DELETED_COMMENT","SMS_SENT"],"example":"ADDED","readOnly":true},"actionData":{"$ref":"#/components/schemas/JsonNode","description":"JsonNode represented action data","readOnly":true},"actionStatus":{"type":"string","description":"String represented Action status","enum":["SUCCESS","FAILURE"],"example":"SUCCESS","readOnly":true},"actionFailureDetails":{"type":"string","description":"Failure action details info. An empty string in case of action status type 'SUCCESS', otherwise includes stack trace of the caused exception.","readOnly":true}}},"AuditLogId":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"string","example":"784f394c-42b6-435a-983c-b7beff2784f9"}},"required":["id"]},"PageDataAuditLog":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AuditLog"},"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}}},"PageDataAssetProfile":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AssetProfile"},"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}}},"AssetProfileInfo":{"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 asset 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 asset details."}}},"PageDataAssetProfileInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AssetProfileInfo"},"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}}},"PageDataApiKeyInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/ApiKeyInfo"},"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}}},"AlarmCommentInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/AlarmCommentId","description":"JSON object with the alarm comment Id. Specify this field to update the alarm comment. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm.","readOnly":true},"createdTime":{"type":"integer","format":"int64","description":"Timestamp of the alarm comment creation, in milliseconds","example":1634058704567,"readOnly":true},"alarmId":{"$ref":"#/components/schemas/AlarmId","description":"JSON object with Alarm id.","readOnly":true},"userId":{"$ref":"#/components/schemas/UserId","description":"JSON object with User id.","readOnly":true},"type":{"type":"string","description":"Defines origination of comment. System type means comment was created by TB. OTHER type means comment was created by user.","enum":["SYSTEM","OTHER"],"example":"SYSTEM/OTHER","readOnly":true},"comment":{"$ref":"#/components/schemas/JsonNode","description":"JSON object with text of comment."},"firstName":{"type":"string","description":"User first name","example":"John"},"lastName":{"type":"string","description":"User last name","example":"Brown"},"email":{"type":"string","description":"User email address","example":"johnBrown@gmail.com"},"name":{"type":"string","description":"representing comment text","example":"Please take a look","readOnly":true}}},"PageDataAlarmCommentInfo":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AlarmCommentInfo"},"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}}},"PageDataEntitySubtype":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/EntitySubtype"},"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}}},"PageDataAiModel":{"type":"object","properties":{"data":{"type":"array","description":"Array of the entities","items":{"$ref":"#/components/schemas/AiModel"},"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}}},"UpdateMessage":{"type":"object","properties":{"updateAvailable":{"type":"boolean","description":"'True' if new platform update is available."},"currentVersion":{"type":"string","description":"Current ThingsBoard version."},"latestVersion":{"type":"string","description":"Latest ThingsBoard version."},"upgradeInstructionsUrl":{"type":"string","description":"Upgrade instructions URL."},"currentVersionReleaseNotesUrl":{"type":"string","description":"Current ThingsBoard version release notes URL."},"latestVersionReleaseNotesUrl":{"type":"string","description":"Latest ThingsBoard version release notes URL."}}},"SystemInfo":{"type":"object","properties":{"systemData":{"type":"array","description":"System data.","items":{"$ref":"#/components/schemas/SystemInfoData"}},"monolith":{"type":"boolean"}}},"SystemInfoData":{"type":"object","properties":{"serviceId":{"type":"string","description":"Service Id."},"serviceType":{"type":"string","description":"Service type."},"cpuUsage":{"type":"integer","format":"int64","description":"CPU usage, in percent."},"cpuCount":{"type":"integer","format":"int64","description":"Total CPU usage."},"memoryUsage":{"type":"integer","format":"int64","description":"Memory usage, in percent."},"totalMemory":{"type":"integer","format":"int64","description":"Total memory in bytes."},"discUsage":{"type":"integer","format":"int64","description":"Disk usage, in percent."},"totalDiscSpace":{"type":"integer","format":"int64","description":"Total disc space in bytes."}}},"RepositorySettingsInfo":{"type":"object","properties":{"configured":{"type":"boolean"},"readOnly":{"type":"boolean"}}},"FeaturesInfo":{"type":"object","properties":{"smsEnabled":{"type":"boolean"},"oauthEnabled":{"type":"boolean"},"twoFaEnabled":{"type":"boolean"},"emailEnabled":{"type":"boolean"},"notificationEnabled":{"type":"boolean"}}},"TbResourceDeleteResult":{"type":"object","properties":{"success":{"type":"boolean"},"references":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/EntityInfo"}}}}},"HasIdObject":{"type":"object","properties":{"id":{}}},"TbImageDeleteResult":{"type":"object","properties":{"success":{"type":"boolean"},"references":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/HasIdObject"}}}}}},"securitySchemes":{"HTTP login form":{"type":"http","description":"Enter Username / Password","scheme":"loginPassword","bearerFormat":"/api/auth/login|X-Authorization"},"API key form":{"type":"apiKey","description":"Enter the API key value with 'ApiKey' prefix in format: **ApiKey <your_api_key_value>**\n\nExample: **ApiKey tb_5te51SkLRYpjGrujUGwqkjFvooWBlQpVe2An2Dr3w13wjfxDW**\n\n<br>**NOTE**: Use only ONE authentication method at a time. If both are authorized, JWT auth takes the priority.<br>\n","name":"X-Authorization","in":"header"}}}}