Viridi ViSTA Platform API

The REST API of ViSTA (Viridi Insights), Viridi's energy management and IIoT platform. ViSTA is a Viridi-operated deployment of the open-source ThingsBoard IoT platform (v3.7.0) served from vista.viridiparente.com, extended with Viridi-authored controllers: SBR30 battery telemetry and data, generator and chiller latest-value reads, CBRS device registration and configuration, and Moxion AEMP equipment telematics and fault feeds. All operations require an authenticated ViSTA account; the OpenAPI contract itself is served anonymously.

Operations 455

Showing the first 250 of 455. The full set is in the contract, and via get_provider_operations.

POST /api/auth/login Login method to get user JWT token data
GET /api/user/settings Get user settings (getUserSettings) #
PUT /api/user/settings Update user settings (saveUserSettings) #
POST /api/user/settings Save user settings (saveUserSettings) #
GET /api/user/settings/{type} Get user settings (getUserSettings) #
PUT /api/user/settings/{type} Update user settings (saveUserSettings) #
PUT /api/notifications/read Mark all notifications as read (markAllNotificationsAsRead) #
PUT /api/notification/{id}/read Mark notification as read (markNotificationAsRead) #
GET /api/images/{type}/{key} #
PUT /api/images/{type}/{key} #
DELETE /api/images/{type}/{key} #
PUT /api/images/{type}/{key}/public/{isPublic} #
GET /api/images/{type}/{key}/info #
PUT /api/images/{type}/{key}/info #
PUT /api/image/import #
PUT /api/2fa/account/config Update 2FA account config (updateTwoFaAccountConfig) #
POST /api/2fa/account/config Verify and save 2FA account config (verifyAndSaveTwoFaAccountConfig) #
DELETE /api/2fa/account/config Delete 2FA account config (deleteTwoFaAccountConfig) #
POST /api/widgetsBundle Create Or Update Widget Bundle (saveWidgetsBundle) #
POST /api/widgetsBundle/{widgetsBundleId}/widgetTypes Update widgets bundle widgets types list (updateWidgetsBundleWidgetTypes) #
POST /api/widgetsBundle/{widgetsBundleId}/widgetTypeFqns Update widgets bundle widgets list from widget type FQNs list (updateWidgetsBundleWidgetFqns) #
GET /api/widgetType Get Widget Type (getWidgetType) #
POST /api/widgetType Create Or Update Widget Type (saveWidgetType) #
POST /api/user Save Or update User (saveUser) #
POST /api/user/{userId}/userCredentialsEnabled Enable/Disable User credentials (setUserCredentialsEnabled) #
POST /api/user/sendActivationMail Send or re-send the activation email #
GET /api/user/mobile/session #
POST /api/user/mobile/session #
DELETE /api/user/mobile/session #
POST /api/tenant Create Or update Tenant (saveTenant) #
POST /api/tenantProfile Create Or update Tenant Profile (saveTenantProfile) #
POST /api/tenantProfile/{tenantProfileId}/default Make tenant profile default (setDefaultTenantProfile) #
POST /api/tenant/{tenantId}/device/{deviceId} Assign device to tenant (assignDeviceToTenant) #
GET /api/tenant/dashboard/home/info Get Tenant Home Dashboard Info (getTenantHomeDashboardInfo) #
POST /api/tenant/dashboard/home/info Update Tenant Home Dashboard Info (getTenantHomeDashboardInfo) #
POST /api/telem #
POST /api/setConfig #
POST /api/setCert #
POST /api/ruleChains/import Import Rule Chains #
POST /api/ruleChain Create Or Update Rule Chain (saveRuleChain) #
POST /api/ruleChain/{ruleChainId}/root Set Root Rule Chain (setRootRuleChain) #
POST /api/ruleChain/{ruleChainId}/edgeTemplateRoot Set Edge Template Root Rule Chain (setEdgeTemplateRootRuleChain) #
POST /api/ruleChain/{ruleChainId}/autoAssignToEdge Set Auto Assign To Edge Rule Chain (setAutoAssignToEdgeRuleChain) #
DELETE /api/ruleChain/{ruleChainId}/autoAssignToEdge Unset Auto Assign To Edge Rule Chain (unsetAutoAssignToEdgeRuleChain) #
POST /api/ruleChain/testScript Test Script function #
POST /api/ruleChain/metadata Update Rule Chain Metadata #
POST /api/ruleChain/device/default Create Default Rule Chain #
POST /api/rpc/twoway/{deviceId} Send two-way RPC request #
POST /api/rpc/oneway/{deviceId} Send one-way RPC request #
GET /api/role Get Role Policy (getRolePolicy) #
POST /api/role Save Or update Role (saveRole) #
POST /api/role/{roleId}/user/{userId} Assign role to user (assignRoleToUser) #
POST /api/role/{roleId}/default Make Role Default (setDefaultRole) #
GET /api/resource Get Resource Infos (getResources) #
POST /api/resource Create Or Update Resource (saveResource) #
GET /api/relations Get List of Relations (findByFrom) #
POST /api/relations Find related entities (findByQuery) #
DELETE /api/relations Delete common relations (deleteCommonRelations) #
GET /api/relations/info Get List of Relation Infos (findInfoByFrom) #
POST /api/relations/info Find related entity infos (findInfoByQuery) #
GET /api/relation Get Relation (getRelation) #
POST /api/relation Create Relation (saveRelation) #
DELETE /api/relation Delete Relation (deleteRelation) #
POST /api/registerAll #
GET /api/queues Get Queues (getTenantQueuesByServiceType) #
POST /api/queues Create Or Update Queue (saveQueue) #
POST /api/plugins/telemetry/{entityType}/{entityId}/{scope} Save entity attributes (saveEntityAttributesV1) #
DELETE /api/plugins/telemetry/{entityType}/{entityId}/{scope} Delete entity attributes (deleteEntityAttributes) #
POST /api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope} Save or update time-series data (saveEntityTelemetry) #
POST /api/plugins/telemetry/{entityType}/{entityId}/timeseries/{scope}/{ttl} Save or update time-series data with TTL (saveEntityTelemetryWithTTL) #
POST /api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope} Save entity attributes (saveEntityAttributesV2) #
POST /api/plugins/telemetry/{deviceId}/{scope} Save device attributes (saveDeviceAttributes) #
DELETE /api/plugins/telemetry/{deviceId}/{scope} Delete device attributes (deleteDeviceAttributes) #
POST /api/plugins/rpc/twoway/{deviceId} Send two-way RPC request (handleTwoWayDeviceRPCRequest) #
POST /api/plugins/rpc/oneway/{deviceId} Send one-way RPC request (handleOneWayDeviceRPCRequest) #
POST /api/otaPackage Create Or Update OTA Package Info (saveOtaPackageInfo) #
GET /api/otaPackage/{otaPackageId} Get OTA Package (getOtaPackageById) #
POST /api/otaPackage/{otaPackageId} Save OTA Package data (saveOtaPackageData) #
DELETE /api/otaPackage/{otaPackageId} Delete OTA Package (deleteOtaPackage) #
GET /api/oauth2/config Get current OAuth2 settings (getCurrentOAuth2Info) #
POST /api/oauth2/config Save OAuth2 settings (saveOAuth2Info) #
GET /api/oauth2/config/template Get the list of all OAuth2 client registration templates (getClientRegistrationTemplates) Available for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority. #
POST /api/oauth2/config/template Create or update OAuth2 client registration template (saveClientRegistrationTemplate) Available for users with 'SYS_ADMIN' authority. #
POST /api/notification/template Save notification template (saveNotificationTemplate) #
POST /api/notification/target Save notification target (saveNotificationTarget) #
POST /api/notification/target/recipients Get recipients for notification target config (getRecipientsForNotificationTargetConfig) #
GET /api/notification/settings Get notification settings (getNotificationSettings) #
POST /api/notification/settings Save notification settings (saveNotificationSettings) #
GET /api/notification/settings/user #
POST /api/notification/settings/user #
POST /api/notification/rule Save notification rule (saveNotificationRule) #
POST /api/notification/request Create notification request (createNotificationRequest) #
POST /api/notification/request/preview Get notification request preview (getNotificationRequestPreview) #
GET /api/noauth/resetPassword Check password reset token (checkResetToken) #
POST /api/noauth/resetPassword Reset password (resetPassword) #
POST /api/noauth/resetPasswordByEmail Request reset password email (requestResetPasswordByEmail) #
POST /api/noauth/oauth2Clients Get OAuth2 clients (getOAuth2Clients) #
GET /api/noauth/activate Check Activate User Token (checkActivateToken) #
POST /api/noauth/activate Activate User #
GET /api/mobile/app/settings Get Mobile application settings (getMobileAppSettings) #
POST /api/mobile/app/settings Create Or Update the Mobile application settings (saveMobileAppSettings) #
POST /api/lwm2m/device-credentials Save device with credentials (Deprecated) #
POST /api/image #
POST /api/genTelem #
GET /api/events/{entityType}/{entityId} Get Events (Deprecated) #
POST /api/events/{entityType}/{entityId} Get Events by event filter (getEvents) #
POST /api/events/{entityType}/{entityId}/clear Clear Events (clearEvents) #
POST /api/entityViews Find related entity views (findByQuery) #
POST /api/entityView Save or update entity view (saveEntityView) #
POST /api/entitiesQuery/find Find Entity Data by Query #
POST /api/entitiesQuery/find/keys Find Entity Keys by Query #
POST /api/entitiesQuery/count Count Entities by Query #
GET /api/entities/vc/version List all versions (listVersions) #
POST /api/entities/vc/version Save entities version (saveEntitiesVersion) #
POST /api/entities/vc/entity Load entities version (loadEntitiesVersion) #
GET /api/edges Get Edges By Ids (getEdgesByIds) #
POST /api/edges Find related edges (findByQuery) #
POST /api/edge Create Or Update Edge (saveEdge) #
POST /api/edge/{edgeId}/{ruleChainId}/root Set root rule chain for provided edge (setEdgeRootRuleChain) #
POST /api/edge/{edgeId}/ruleChain/{ruleChainId} Assign rule chain to edge (assignRuleChainToEdge) #
DELETE /api/edge/{edgeId}/ruleChain/{ruleChainId} Unassign rule chain from edge (unassignRuleChainFromEdge) #
POST /api/edge/{edgeId}/entityView/{entityViewId} Assign entity view to edge (assignEntityViewToEdge) #
DELETE /api/edge/{edgeId}/entityView/{entityViewId} Unassign entity view from edge (unassignEntityViewFromEdge) #
POST /api/edge/{edgeId}/device/{deviceId} Assign device to edge (assignDeviceToEdge) #
DELETE /api/edge/{edgeId}/device/{deviceId} Unassign device from edge (unassignDeviceFromEdge) #
POST /api/edge/{edgeId}/dashboard/{dashboardId} Assign dashboard to edge (assignDashboardToEdge) #
DELETE /api/edge/{edgeId}/dashboard/{dashboardId} Unassign dashboard from edge (unassignDashboardFromEdge) #
POST /api/edge/{edgeId}/asset/{assetId} Assign asset to edge (assignAssetToEdge) #
DELETE /api/edge/{edgeId}/asset/{assetId} Unassign asset from edge (unassignAssetFromEdge) #
POST /api/edge/sync/{edgeId} Sync edge (syncEdge) #
POST /api/edge/bulk_import Import the bulk of edges (processEdgesBulkImport) #
GET /api/devices Get Devices By Ids (getDevicesByIds) #
POST /api/devices Find related devices (findByQuery) #
POST /api/device Create Or Update Device (saveDevice) #
POST /api/deviceProfile Create Or Update Device Profile (saveDeviceProfile) #
POST /api/deviceProfile/{deviceProfileId}/default Make Device Profile Default (setDefaultDeviceProfile) #
POST /api/device/credentials Update device credentials (updateDeviceCredentials) #
POST /api/device/bulk_import Import the bulk of devices (processDevicesBulkImport) #
POST /api/device-with-credentials Create Device (saveDevice) with credentials #
POST /api/deregisterAll #
POST /api/dashboard Create Or Update Dashboard (saveDashboard) #
POST /api/dashboard/{dashboardId}/customers Update the Dashboard Customers (updateDashboardCustomers) #
POST /api/dashboard/{dashboardId}/customers/remove Remove the Dashboard Customers (removeDashboardCustomers) #
POST /api/dashboard/{dashboardId}/customers/add Adds the Dashboard Customers (addDashboardCustomers) #
POST /api/customer Create or update Customer (saveCustomer) #
POST /api/customer/{customerId}/entityView/{entityViewId} Assign Entity View to customer (assignEntityViewToCustomer) #
POST /api/customer/{customerId}/edge/{edgeId} Assign edge to customer (assignEdgeToCustomer) #
POST /api/customer/{customerId}/device/{deviceId} Assign device to customer (assignDeviceToCustomer) #
POST /api/customer/{customerId}/dashboard/{dashboardId} Assign the Dashboard (assignDashboardToCustomer) #
DELETE /api/customer/{customerId}/dashboard/{dashboardId} Unassign the Dashboard (unassignDashboardFromCustomer) #
POST /api/customer/{customerId}/asset/{assetId} Assign asset to customer (assignAssetToCustomer) #
POST /api/customer/public/entityView/{entityViewId} Make entity view publicly available (assignEntityViewToPublicCustomer) #
POST /api/customer/public/edge/{edgeId} Make edge publicly available (assignEdgeToPublicCustomer) #
POST /api/customer/public/device/{deviceId} Make device publicly available (assignDeviceToPublicCustomer) #
POST /api/customer/public/dashboard/{dashboardId} Assign the Dashboard to Public Customer (assignDashboardToPublicCustomer) #
DELETE /api/customer/public/dashboard/{dashboardId} Unassign the Dashboard from Public Customer (unassignDashboardFromPublicCustomer) #
POST /api/customer/public/asset/{assetId} Make asset publicly available (assignAssetToPublicCustomer) #
POST /api/customer/device/{deviceName}/claim Claim device (claimDevice) #
DELETE /api/customer/device/{deviceName}/claim Reclaim device (reClaimDevice) #
POST /api/auth/logout Logout (logout) #
POST /api/auth/changePassword Change password for current User (changePassword) #
POST /api/auth/2fa/verification/send Request 2FA verification code (requestTwoFaVerificationCode) #
POST /api/auth/2fa/verification/check Check 2FA verification code (checkTwoFaVerificationCode) #
GET /api/assets Get Assets By Ids (getAssetsByIds) #
POST /api/assets Find related assets (findByQuery) #
POST /api/asset Create Or Update Asset (saveAsset) #
POST /api/assetProfile Create Or Update Asset Profile (saveAssetProfile) #
POST /api/assetProfile/{assetProfileId}/default Make Asset Profile Default (setDefaultAssetProfile) #
POST /api/asset/bulk_import Import the bulk of assets (processAssetsBulkImport) #
POST /api/alarmsQuery/find Find Alarms by Query #
POST /api/alarmsQuery/count Count Alarms by Query (countAlarmsByQuery) #
POST /api/alarm Create or Update Alarm (saveAlarm) #
GET /api/alarm/{alarmId}/comment Get Alarm comments (getAlarmComments) #
POST /api/alarm/{alarmId}/comment Create or update Alarm Comment #
POST /api/alarm/{alarmId}/clear Clear Alarm (clearAlarm) #
POST /api/alarm/{alarmId}/assign/{assigneeId} Assign/Reassign Alarm (assignAlarm) #
POST /api/alarm/{alarmId}/ack Acknowledge Alarm (ackAlarm) #
POST /api/admin/settings Get the Administration Settings object using key (getAdminSettings) #
POST /api/admin/settings/testSms Send test sms (sendTestMail) #
POST /api/admin/settings/testMail Send test email (sendTestMail) #
GET /api/admin/securitySettings Get the Security Settings object #
POST /api/admin/securitySettings Update Security Settings (saveSecuritySettings) #
GET /api/admin/repositorySettings Get repository settings (getRepositorySettings) #
POST /api/admin/repositorySettings Creates or Updates the repository settings (saveRepositorySettings) #
DELETE /api/admin/repositorySettings Delete repository settings (deleteRepositorySettings) #
POST /api/admin/repositorySettings/checkAccess Check repository access (checkRepositoryAccess) #
GET /api/admin/jwtSettings Get the JWT Settings object (getJwtSettings) #
POST /api/admin/jwtSettings Update JWT Settings (saveJwtSettings) #
GET /api/admin/autoCommitSettings Get auto commit settings (getAutoCommitSettings) #
POST /api/admin/autoCommitSettings Creates or Updates the auto commit settings (saveAutoCommitSettings) #
DELETE /api/admin/autoCommitSettings Delete auto commit settings (deleteAutoCommitSettings) #
GET /api/2fa/settings Get platform 2FA settings (getPlatformTwoFaSettings) #
POST /api/2fa/settings Save platform 2FA settings (savePlatformTwoFaSettings) #
POST /api/2fa/account/config/submit Submit 2FA account config (submitTwoFaAccountConfig) #
POST /api/2fa/account/config/generate Generate 2FA account config (generateTwoFaAccountConfig) #
GET /api/widgetsBundles Get Widget Bundles (getWidgetsBundles) #
GET /api/widgetsBundle/{widgetsBundleId} Get Widget Bundle (getWidgetsBundleById) #
DELETE /api/widgetsBundle/{widgetsBundleId} Delete widgets bundle (deleteWidgetsBundle) #
GET /api/widgetTypes Get all Widget types for specified Bundle (getBundleWidgetTypesByBundleAlias) (Deprecated) #
GET /api/widgetTypesInfos Get Widget Type Info objects (getBundleWidgetTypesInfosByBundleAlias) (Deprecated) #
GET /api/widgetTypesDetails Get all Widget types details for specified Bundle (getBundleWidgetTypesDetailsByBundleAlias) (Deprecated) #
GET /api/widgetTypeInfo/{widgetTypeId} Get Widget Type Info (getWidgetTypeInfoById) #
GET /api/widgetTypeFqns Get all Widget type fqns for specified Bundle (getBundleWidgetTypeFqns) #
GET /api/widgetType/{widgetTypeId} Get Widget Type Details (getWidgetTypeById) #
DELETE /api/widgetType/{widgetTypeId} Delete widget type (deleteWidgetType) #
GET /api/v2/alarms Get All Alarms (getAllAlarmsV2) #
GET /api/v2/alarm/{entityType}/{entityId} Get Alarms (getAlarmsV2) #
GET /api/users Get Users (getUsers) #
GET /api/users/info Find users by query (findUsersByQuery) #
GET /api/users/assign/{alarmId} Get usersForAssign (getUsersForAssign) #
GET /api/user/{userId} Get User (getUserById) #
DELETE /api/user/{userId} Delete User (deleteUser) #
GET /api/user/{userId}/token Get User Token (getUserToken) #
GET /api/user/tokenAccessEnabled Check Token Access Enabled (isUserTokenAccessEnabled) #
GET /api/user/dashboards Get information about last visited and starred dashboards (getLastVisitedDashboards) #
GET /api/user/dashboards/{dashboardId}/{action} Report action of User over the dashboard (reportUserDashboardAction) #
GET /api/usage #
GET /api/uiSettings/helpBaseUrl Get UI help base url (getHelpBaseUrl) #
GET /api/tenants Get Tenants (getTenants) #
GET /api/tenantProfiles Get Tenant Profiles (getTenantProfiles) #
GET /api/tenantProfileInfos Get Tenant Profiles Info (getTenantProfileInfos) #
GET /api/tenantProfileInfo/{tenantProfileId} Get Tenant Profile Info (getTenantProfileInfoById) #
GET /api/tenantProfileInfo/default Get default Tenant Profile Info (getDefaultTenantProfileInfo) #
GET /api/tenantProfile/{tenantProfileId} Get Tenant Profile (getTenantProfileById) #
DELETE /api/tenantProfile/{tenantProfileId} Delete Tenant Profile (deleteTenantProfile) #
GET /api/tenantInfos Get Tenants Info (getTenants) #
GET /api/tenant/{tenantId} Get Tenant (getTenantById) #
DELETE /api/tenant/{tenantId} Delete Tenant (deleteTenant) #
GET /api/tenant/{tenantId}/users Get Tenant Users (getTenantAdmins) #
GET /api/tenant/{tenantId}/dashboards Get Tenant Dashboards by System Administrator (getTenantDashboards) #
GET /api/tenant/info/{tenantId} Get Tenant Info (getTenantInfoById) #
GET /api/tenant/entityViews Get Entity View by name (getTenantEntityView) #
GET /api/tenant/entityViewInfos Get Tenant Entity Views (getTenantEntityViews) #
GET /api/tenant/edges Get Tenant Edge (getTenantEdge) #
GET /api/tenant/edgeInfos Get Tenant Edge Infos (getTenantEdgeInfos) #
GET /api/tenant/devices Get Tenant Device (getTenantDevice) #
GET /api/tenant/deviceInfos Get Tenant Device Infos (getTenantDeviceInfos) #
GET /api/tenant/dashboards Get Tenant Dashboards (getTenantDashboards) #
GET /api/tenant/customers Get Tenant Customer by Customer title (getTenantCustomer) #
GET /api/tenant/assets Get Tenant Asset (getTenantAsset) #
GET /api/tenant/assetInfos Get Tenant Asset Infos (getTenantAssetInfos) #
GET /api/ruleNode/{ruleNodeId}/debugIn Get latest input message (getLatestRuleNodeDebugInput) #
GET /api/ruleChains Get Rule Chains (getRuleChains) #
GET /api/ruleChains/export Export Rule Chains #
GET /api/ruleChain/{ruleChainId} Get Rule Chain (getRuleChainById) #
DELETE /api/ruleChain/{ruleChainId} Delete rule chain (deleteRuleChain) #
GET /api/ruleChain/{ruleChainId}/output/labels Get Rule Chain output labels (getRuleChainOutputLabels) #
GET /api/ruleChain/{ruleChainId}/output/labels/usage Get output labels usage (getRuleChainOutputLabelsUsage) #
GET /api/ruleChain/{ruleChainId}/metadata Get Rule Chain (getRuleChainById) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/viridi-parente-vista"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

viridi-parente-vista-openapi.json Raw ↑
{"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":"3.7.0"},"servers":[{"url":"https://vista.viridiparente.com","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":1780487377412}},"bad-credentials":{"summary":"Bad credentials","value":{"status":401,"message":"Invalid username or password","errorCode":10,"timestamp":1780487377412}},"account-locked":{"summary":"Locked account","value":{"status":401,"message":"User account is locked due to security policy","errorCode":10,"timestamp":1780487377412}},"token-expired":{"summary":"JWT token expired","value":{"status":401,"message":"Token has expired","errorCode":11,"timestamp":1780487377412}},"authentication-failed":{"summary":"General authentication error","value":{"status":401,"message":"Authentication failed","errorCode":10,"timestamp":1780487377412}}}}}},"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":1780487377414,"resetToken":"DptQdE9EqUSxzSoDkOPVOhOHe7WGFy"}}}}}}}}},"/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/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":{"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/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":{"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"}}],"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":{"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":{"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":{"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":{"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":{"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/ImageExportData"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TbResourceInfo"}}}}}}},"/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_1","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/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":{"default":"true"}}],"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 the 'Model' tab of the Response Class 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":{"default":"true"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/sendActivationMail":{"post":{"tags":["user-controller"],"summary":"Send or re-send the activation email","description":"Force send the activation email to the user. Useful to resend the email if user has accidentally deleted it. \n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.","operationId":"sendActivationEmail","parameters":[{"name":"email","in":"query","description":"Email of the user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/user/mobile/session":{"get":{"tags":["user-controller"],"operationId":"getMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileSessionInfo"}}}}}},"post":{"tags":["user-controller"],"operationId":"saveMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileSessionInfo"}}},"required":true},"responses":{"200":{"description":"OK"}}},"delete":{"tags":["user-controller"],"operationId":"removeMobileSession","parameters":[{"name":"X-Mobile-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/tenant":{"post":{"tags":["tenant-controller"],"summary":"Create Or update Tenant (saveTenant)","description":"Create or update the Tenant. When creating tenant, platform generates Tenant Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). Default Rule Chain and Device profile are also generated for the new tenants automatically. The newly created Tenant Id will be present in the response. Specify existing Tenant Id id to update the Tenant. Referencing non-existing Tenant Id will cause 'Not Found' error.Remove 'id', 'tenantId' from the request body example (below) to create new Tenant entity.\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\": \"Default\",\n  \"description\": \"Default tenant profile\",\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      \"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    }\n  },\n  \"default\": true\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/telem":{"post":{"tags":["sbr-30-data"],"operationId":"getSBR30Telem","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"byte"}}}}}}},"/api/setConfig":{"post":{"tags":["cbrs-controller"],"operationId":"setConfig","requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/api/setCert":{"post":{"tags":["cbrs-controller"],"operationId":"setCert","requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonNode"}}}}}}},"/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 (setAutoAssign

# --- truncated at 32 KB (784 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/viridi-parente/refs/heads/main/openapi/viridi-parente-vista-openapi.json