From b936848886cdbe1de4faba2deec5eb9064e48414 Mon Sep 17 00:00:00 2001 From: Viacheslav Klimov Date: Mon, 29 Jun 2026 11:16:44 +0300 Subject: [PATCH] Update specs and clients for 4.3.1.3 --- ce/spec/openapi.json | 2 +- ce/tb_ce_client/api/admin_controller_api.py | 2 +- .../api/ai_model_controller_api.py | 2 +- .../api/alarm_comment_controller_api.py | 2 +- ce/tb_ce_client/api/alarm_controller_api.py | 2 +- .../api/alarm_rule_controller_api.py | 2 +- ce/tb_ce_client/api/api_key_controller_api.py | 2 +- ce/tb_ce_client/api/asset_controller_api.py | 2 +- .../api/asset_profile_controller_api.py | 2 +- .../api/audit_log_controller_api.py | 2 +- ce/tb_ce_client/api/auth_controller_api.py | 2 +- .../api/calculated_field_controller_api.py | 2 +- .../component_descriptor_controller_api.py | 2 +- .../api/customer_controller_api.py | 2 +- .../api/dashboard_controller_api.py | 2 +- .../api/device_connectivity_controller_api.py | 2 +- ce/tb_ce_client/api/device_controller_api.py | 2 +- .../api/device_profile_controller_api.py | 2 +- ce/tb_ce_client/api/domain_controller_api.py | 2 +- ce/tb_ce_client/api/edge_controller_api.py | 2 +- .../api/edge_event_controller_api.py | 2 +- ...entities_version_control_controller_api.py | 2 +- .../api/entity_query_controller_api.py | 2 +- .../api/entity_relation_controller_api.py | 2 +- .../api/entity_view_controller_api.py | 2 +- ce/tb_ce_client/api/event_controller_api.py | 2 +- ce/tb_ce_client/api/image_controller_api.py | 2 +- ce/tb_ce_client/api/job_controller_api.py | 2 +- ce/tb_ce_client/api/login_endpoint_api.py | 2 +- ce/tb_ce_client/api/lwm2m_controller_api.py | 2 +- .../mail_config_template_controller_api.py | 2 +- .../api/mobile_app_bundle_controller_api.py | 2 +- .../api/mobile_app_controller_api.py | 2 +- .../api/notification_controller_api.py | 2 +- .../api/notification_rule_controller_api.py | 2 +- .../api/notification_target_controller_api.py | 2 +- .../notification_template_controller_api.py | 2 +- .../o_auth2_config_template_controller_api.py | 2 +- ce/tb_ce_client/api/o_auth2_controller_api.py | 2 +- .../api/ota_package_controller_api.py | 2 +- .../api/qr_code_settings_controller_api.py | 2 +- ce/tb_ce_client/api/queue_controller_api.py | 2 +- .../api/queue_stats_controller_api.py | 2 +- ce/tb_ce_client/api/rpc_v1_controller_api.py | 2 +- ce/tb_ce_client/api/rpc_v2_controller_api.py | 2 +- .../api/rule_chain_controller_api.py | 2 +- .../api/rule_engine_controller_api.py | 2 +- .../api/tb_resource_controller_api.py | 2 +- .../api/telemetry_controller_api.py | 2 +- ce/tb_ce_client/api/tenant_controller_api.py | 2 +- .../api/tenant_profile_controller_api.py | 2 +- ce/tb_ce_client/api/trendz_controller_api.py | 2 +- .../two_factor_auth_config_controller_api.py | 2 +- .../api/two_factor_auth_controller_api.py | 2 +- .../api/ui_settings_controller_api.py | 2 +- .../api/usage_info_controller_api.py | 2 +- ce/tb_ce_client/api/user_controller_api.py | 2 +- .../api/widget_type_controller_api.py | 2 +- .../api/widgets_bundle_controller_api.py | 2 +- ce/tb_ce_client/api_client.py | 2 +- ce/tb_ce_client/configuration.py | 4 +- ce/tb_ce_client/exceptions.py | 2 +- paas/docs/IntegrationControllerApi.md | 25 + paas/docs/SolutionControllerApi.md | 125 - paas/docs/SolutionInstallResponse.md | 35 - paas/docs/SolutionTemplateLevel.md | 26 - paas/docs/SubscriptionExceptionErrorCode.md | 2 - paas/docs/TenantSolutionTemplateDetails.md | 37 - paas/docs/TenantSolutionTemplateInfo.md | 38 - .../TenantSolutionTemplateInstructions.md | 34 - .../ThingsboardCredentialsExpiredResponse.md | 2 +- paas/docs/ThingsboardErrorResponse.md | 2 +- paas/spec/openapi.json | 2253 ++-- paas/tb_paas_client/__init__.py | 12 - paas/tb_paas_client/_controller_map.py | 19 +- paas/tb_paas_client/api/__init__.py | 3 - .../api/admin_controller_api.py | 2 +- .../api/ai_chat_controller_api.py | 14 +- .../api/ai_device_dashboard_controller_api.py | 2 +- .../api/ai_model_controller_api.py | 2 +- .../api/ai_solution_controller_api.py | 2 +- .../api/ai_tool_controller_api.py | 2 +- .../api/alarm_comment_controller_api.py | 2 +- .../api/alarm_controller_api.py | 2 +- .../api/alarm_rule_controller_api.py | 2 +- .../api/api_key_controller_api.py | 2 +- .../api/asset_controller_api.py | 2 +- .../api/asset_profile_controller_api.py | 2 +- .../api/audit_log_controller_api.py | 2 +- .../tb_paas_client/api/auth_controller_api.py | 2 +- .../api/billing_endpoint_controller_api.py | 2 +- .../api/blob_entity_controller_api.py | 2 +- .../api/calculated_field_controller_api.py | 2 +- .../api/cloud_endpoint_controller_api.py | 2 +- .../component_descriptor_controller_api.py | 2 +- .../api/converter_controller_api.py | 2 +- .../api/converter_library_controller_api.py | 2 +- .../api/custom_menu_controller_api.py | 2 +- .../api/custom_translation_controller_api.py | 2 +- .../api/customer_controller_api.py | 2 +- .../api/dashboard_controller_api.py | 2 +- .../api/dashboard_report_controller_api.py | 2 +- .../api/device_connectivity_controller_api.py | 2 +- .../api/device_controller_api.py | 2 +- ...device_group_ota_package_controller_api.py | 2 +- .../api/device_profile_controller_api.py | 2 +- .../api/domain_controller_api.py | 2 +- .../tb_paas_client/api/edge_controller_api.py | 2 +- .../api/edge_event_controller_api.py | 2 +- ...entities_version_control_controller_api.py | 2 +- .../api/entity_group_controller_api.py | 2 +- .../api/entity_query_controller_api.py | 2 +- .../api/entity_relation_controller_api.py | 2 +- .../api/entity_view_controller_api.py | 2 +- .../api/event_controller_api.py | 2 +- .../api/group_permission_controller_api.py | 2 +- .../api/image_controller_api.py | 2 +- .../api/integration_controller_api.py | 283 +- paas/tb_paas_client/api/job_controller_api.py | 2 +- paas/tb_paas_client/api/login_endpoint_api.py | 2 +- .../api/lwm2m_controller_api.py | 2 +- .../mail_config_template_controller_api.py | 2 +- .../api/mobile_app_bundle_controller_api.py | 2 +- .../api/mobile_app_controller_api.py | 2 +- .../api/notification_controller_api.py | 2 +- .../api/notification_rule_controller_api.py | 2 +- .../api/notification_target_controller_api.py | 2 +- .../notification_template_controller_api.py | 2 +- .../o_auth2_config_template_controller_api.py | 2 +- .../api/o_auth2_controller_api.py | 2 +- .../api/ota_package_controller_api.py | 2 +- .../api/owner_controller_api.py | 2 +- .../api/qr_code_settings_controller_api.py | 2 +- .../api/queue_controller_api.py | 2 +- .../api/queue_stats_controller_api.py | 2 +- .../api/report_controller_api.py | 2 +- .../api/report_template_controller_api.py | 2 +- .../tb_paas_client/api/role_controller_api.py | 2 +- .../api/rpc_v1_controller_api.py | 2 +- .../api/rpc_v2_controller_api.py | 2 +- .../api/rule_chain_controller_api.py | 2 +- .../api/rule_engine_controller_api.py | 2 +- .../api/scheduler_event_controller_api.py | 2 +- .../api/secret_controller_api.py | 2 +- .../api/self_registration_controller_api.py | 2 +- .../api/sign_up_controller_api.py | 2 +- .../api/solution_controller_api.py | 1427 --- .../solution_export_import_controller_api.py | 2 +- .../api/subscription_controller_api.py | 2 +- .../api/tb_resource_controller_api.py | 2 +- .../api/telemetry_controller_api.py | 2 +- .../api/tenant_controller_api.py | 2 +- .../api/tenant_profile_controller_api.py | 2 +- .../api/translation_controller_api.py | 2 +- .../api/trendz_api_controller_api.py | 2 +- .../api/trendz_controller_api.py | 2 +- .../two_factor_auth_config_controller_api.py | 2 +- .../api/two_factor_auth_controller_api.py | 2 +- .../api/ui_settings_controller_api.py | 2 +- .../api/usage_info_controller_api.py | 2 +- .../tb_paas_client/api/user_controller_api.py | 2 +- .../api/user_permissions_controller_api.py | 2 +- .../api/white_labeling_controller_api.py | 2 +- .../api/widget_type_controller_api.py | 2 +- .../api/widgets_bundle_controller_api.py | 2 +- paas/tb_paas_client/api_client.py | 2 +- paas/tb_paas_client/client.pyi | 29 +- paas/tb_paas_client/configuration.py | 4 +- paas/tb_paas_client/exceptions.py | 2 +- paas/tb_paas_client/models/__init__.py | 15 - .../models/solution_install_response.py | 118 - .../models/solution_template_level.py | 42 - .../subscription_exception_error_code.py | 1 - .../tenant_solution_template_details.py | 115 - .../models/tenant_solution_template_info.py | 117 - .../tenant_solution_template_instructions.py | 116 - pe/docs/IntegrationControllerApi.md | 25 + pe/docs/SolutionControllerApi.md | 125 - pe/docs/SolutionInstallResponse.md | 35 - pe/docs/SolutionTemplateLevel.md | 26 - pe/docs/TenantSolutionTemplateDetails.md | 37 - pe/docs/TenantSolutionTemplateInfo.md | 38 - pe/docs/TenantSolutionTemplateInstructions.md | 34 - pe/spec/openapi.json | 10250 +++++++--------- pe/tb_pe_client/__init__.py | 12 - pe/tb_pe_client/_controller_map.py | 19 +- pe/tb_pe_client/api/__init__.py | 3 - pe/tb_pe_client/api/admin_controller_api.py | 2 +- pe/tb_pe_client/api/ai_chat_controller_api.py | 14 +- .../api/ai_device_dashboard_controller_api.py | 2 +- .../api/ai_model_controller_api.py | 2 +- .../api/ai_solution_controller_api.py | 2 +- pe/tb_pe_client/api/ai_tool_controller_api.py | 2 +- .../api/alarm_comment_controller_api.py | 2 +- pe/tb_pe_client/api/alarm_controller_api.py | 2 +- .../api/alarm_rule_controller_api.py | 2 +- pe/tb_pe_client/api/api_key_controller_api.py | 2 +- pe/tb_pe_client/api/asset_controller_api.py | 2 +- .../api/asset_profile_controller_api.py | 2 +- .../api/audit_log_controller_api.py | 2 +- pe/tb_pe_client/api/auth_controller_api.py | 2 +- .../api/blob_entity_controller_api.py | 2 +- .../api/calculated_field_controller_api.py | 2 +- .../component_descriptor_controller_api.py | 2 +- .../api/converter_controller_api.py | 2 +- .../api/converter_library_controller_api.py | 2 +- .../api/custom_menu_controller_api.py | 2 +- .../api/custom_translation_controller_api.py | 2 +- .../api/customer_controller_api.py | 2 +- .../api/dashboard_controller_api.py | 2 +- .../api/dashboard_report_controller_api.py | 2 +- .../api/device_connectivity_controller_api.py | 2 +- pe/tb_pe_client/api/device_controller_api.py | 2 +- ...device_group_ota_package_controller_api.py | 2 +- .../api/device_profile_controller_api.py | 2 +- pe/tb_pe_client/api/domain_controller_api.py | 2 +- pe/tb_pe_client/api/edge_controller_api.py | 2 +- .../api/edge_event_controller_api.py | 2 +- ...entities_version_control_controller_api.py | 2 +- .../api/entity_group_controller_api.py | 2 +- .../api/entity_query_controller_api.py | 2 +- .../api/entity_relation_controller_api.py | 2 +- .../api/entity_view_controller_api.py | 2 +- pe/tb_pe_client/api/event_controller_api.py | 2 +- .../api/group_permission_controller_api.py | 2 +- pe/tb_pe_client/api/image_controller_api.py | 2 +- .../api/integration_controller_api.py | 283 +- pe/tb_pe_client/api/job_controller_api.py | 2 +- pe/tb_pe_client/api/login_endpoint_api.py | 2 +- pe/tb_pe_client/api/lwm2m_controller_api.py | 2 +- .../mail_config_template_controller_api.py | 2 +- .../api/mobile_app_bundle_controller_api.py | 2 +- .../api/mobile_app_controller_api.py | 2 +- .../api/notification_controller_api.py | 2 +- .../api/notification_rule_controller_api.py | 2 +- .../api/notification_target_controller_api.py | 2 +- .../notification_template_controller_api.py | 2 +- .../o_auth2_config_template_controller_api.py | 2 +- pe/tb_pe_client/api/o_auth2_controller_api.py | 2 +- .../api/ota_package_controller_api.py | 2 +- pe/tb_pe_client/api/owner_controller_api.py | 2 +- .../api/qr_code_settings_controller_api.py | 2 +- pe/tb_pe_client/api/queue_controller_api.py | 2 +- .../api/queue_stats_controller_api.py | 2 +- pe/tb_pe_client/api/report_controller_api.py | 2 +- .../api/report_template_controller_api.py | 2 +- pe/tb_pe_client/api/role_controller_api.py | 2 +- pe/tb_pe_client/api/rpc_v1_controller_api.py | 2 +- pe/tb_pe_client/api/rpc_v2_controller_api.py | 2 +- .../api/rule_chain_controller_api.py | 2 +- .../api/rule_engine_controller_api.py | 2 +- .../api/scheduler_event_controller_api.py | 2 +- pe/tb_pe_client/api/secret_controller_api.py | 2 +- .../api/self_registration_controller_api.py | 2 +- pe/tb_pe_client/api/sign_up_controller_api.py | 2 +- .../api/solution_controller_api.py | 1427 --- .../solution_export_import_controller_api.py | 2 +- .../api/tb_resource_controller_api.py | 2 +- .../api/telemetry_controller_api.py | 2 +- pe/tb_pe_client/api/tenant_controller_api.py | 2 +- .../api/tenant_profile_controller_api.py | 2 +- .../api/translation_controller_api.py | 2 +- .../api/trendz_api_controller_api.py | 2 +- pe/tb_pe_client/api/trendz_controller_api.py | 2 +- .../two_factor_auth_config_controller_api.py | 2 +- .../api/two_factor_auth_controller_api.py | 2 +- .../api/ui_settings_controller_api.py | 2 +- .../api/usage_info_controller_api.py | 2 +- pe/tb_pe_client/api/user_controller_api.py | 2 +- .../api/user_permissions_controller_api.py | 2 +- .../api/white_labeling_controller_api.py | 2 +- .../api/widget_type_controller_api.py | 2 +- .../api/widgets_bundle_controller_api.py | 2 +- pe/tb_pe_client/api_client.py | 2 +- pe/tb_pe_client/client.pyi | 29 +- pe/tb_pe_client/configuration.py | 4 +- pe/tb_pe_client/exceptions.py | 2 +- pe/tb_pe_client/models/__init__.py | 15 - .../models/solution_install_response.py | 118 - .../models/solution_template_level.py | 42 - .../tenant_solution_template_details.py | 115 - .../models/tenant_solution_template_info.py | 117 - .../tenant_solution_template_instructions.py | 116 - 283 files changed, 6363 insertions(+), 11887 deletions(-) delete mode 100644 paas/docs/SolutionControllerApi.md delete mode 100644 paas/docs/SolutionInstallResponse.md delete mode 100644 paas/docs/SolutionTemplateLevel.md delete mode 100644 paas/docs/TenantSolutionTemplateDetails.md delete mode 100644 paas/docs/TenantSolutionTemplateInfo.md delete mode 100644 paas/docs/TenantSolutionTemplateInstructions.md delete mode 100644 paas/tb_paas_client/api/solution_controller_api.py delete mode 100644 paas/tb_paas_client/models/solution_install_response.py delete mode 100644 paas/tb_paas_client/models/solution_template_level.py delete mode 100644 paas/tb_paas_client/models/tenant_solution_template_details.py delete mode 100644 paas/tb_paas_client/models/tenant_solution_template_info.py delete mode 100644 paas/tb_paas_client/models/tenant_solution_template_instructions.py delete mode 100644 pe/docs/SolutionControllerApi.md delete mode 100644 pe/docs/SolutionInstallResponse.md delete mode 100644 pe/docs/SolutionTemplateLevel.md delete mode 100644 pe/docs/TenantSolutionTemplateDetails.md delete mode 100644 pe/docs/TenantSolutionTemplateInfo.md delete mode 100644 pe/docs/TenantSolutionTemplateInstructions.md delete mode 100644 pe/tb_pe_client/api/solution_controller_api.py delete mode 100644 pe/tb_pe_client/models/solution_install_response.py delete mode 100644 pe/tb_pe_client/models/solution_template_level.py delete mode 100644 pe/tb_pe_client/models/tenant_solution_template_details.py delete mode 100644 pe/tb_pe_client/models/tenant_solution_template_info.py delete mode 100644 pe/tb_pe_client/models/tenant_solution_template_instructions.py diff --git a/ce/spec/openapi.json b/ce/spec/openapi.json index 7e50f194..677f90a4 100644 --- a/ce/spec/openapi.json +++ b/ce/spec/openapi.json @@ -12,7 +12,7 @@ "name": "Apache License Version 2.0", "url": "https://github.com/thingsboard/thingsboard/blob/master/LICENSE" }, - "version": "4.3.1.2" + "version": "4.3.1.3" }, "servers": [ { diff --git a/ce/tb_ce_client/api/admin_controller_api.py b/ce/tb_ce_client/api/admin_controller_api.py index 0fc202a7..a91d8093 100644 --- a/ce/tb_ce_client/api/admin_controller_api.py +++ b/ce/tb_ce_client/api/admin_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/ai_model_controller_api.py b/ce/tb_ce_client/api/ai_model_controller_api.py index 707c1526..03a370f9 100644 --- a/ce/tb_ce_client/api/ai_model_controller_api.py +++ b/ce/tb_ce_client/api/ai_model_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/alarm_comment_controller_api.py b/ce/tb_ce_client/api/alarm_comment_controller_api.py index 4223d1e8..304a1a0f 100644 --- a/ce/tb_ce_client/api/alarm_comment_controller_api.py +++ b/ce/tb_ce_client/api/alarm_comment_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/alarm_controller_api.py b/ce/tb_ce_client/api/alarm_controller_api.py index 753f0108..fb4f583d 100644 --- a/ce/tb_ce_client/api/alarm_controller_api.py +++ b/ce/tb_ce_client/api/alarm_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/alarm_rule_controller_api.py b/ce/tb_ce_client/api/alarm_rule_controller_api.py index de39bc10..99d0fca0 100644 --- a/ce/tb_ce_client/api/alarm_rule_controller_api.py +++ b/ce/tb_ce_client/api/alarm_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/api_key_controller_api.py b/ce/tb_ce_client/api/api_key_controller_api.py index 583cca31..3ed994d8 100644 --- a/ce/tb_ce_client/api/api_key_controller_api.py +++ b/ce/tb_ce_client/api/api_key_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/asset_controller_api.py b/ce/tb_ce_client/api/asset_controller_api.py index 6a43694c..d8737b1b 100644 --- a/ce/tb_ce_client/api/asset_controller_api.py +++ b/ce/tb_ce_client/api/asset_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/asset_profile_controller_api.py b/ce/tb_ce_client/api/asset_profile_controller_api.py index c0556713..fde3f33d 100644 --- a/ce/tb_ce_client/api/asset_profile_controller_api.py +++ b/ce/tb_ce_client/api/asset_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/audit_log_controller_api.py b/ce/tb_ce_client/api/audit_log_controller_api.py index 9cfd0f4a..14032a5d 100644 --- a/ce/tb_ce_client/api/audit_log_controller_api.py +++ b/ce/tb_ce_client/api/audit_log_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/auth_controller_api.py b/ce/tb_ce_client/api/auth_controller_api.py index 38d4d5df..b0058abc 100644 --- a/ce/tb_ce_client/api/auth_controller_api.py +++ b/ce/tb_ce_client/api/auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/calculated_field_controller_api.py b/ce/tb_ce_client/api/calculated_field_controller_api.py index 6478bbd5..74210b85 100644 --- a/ce/tb_ce_client/api/calculated_field_controller_api.py +++ b/ce/tb_ce_client/api/calculated_field_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/component_descriptor_controller_api.py b/ce/tb_ce_client/api/component_descriptor_controller_api.py index bc6c6944..d976d650 100644 --- a/ce/tb_ce_client/api/component_descriptor_controller_api.py +++ b/ce/tb_ce_client/api/component_descriptor_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/customer_controller_api.py b/ce/tb_ce_client/api/customer_controller_api.py index a7266e1c..09d679fb 100644 --- a/ce/tb_ce_client/api/customer_controller_api.py +++ b/ce/tb_ce_client/api/customer_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/dashboard_controller_api.py b/ce/tb_ce_client/api/dashboard_controller_api.py index 3db622cd..3c6350e6 100644 --- a/ce/tb_ce_client/api/dashboard_controller_api.py +++ b/ce/tb_ce_client/api/dashboard_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/device_connectivity_controller_api.py b/ce/tb_ce_client/api/device_connectivity_controller_api.py index 57d41ac3..703af5dc 100644 --- a/ce/tb_ce_client/api/device_connectivity_controller_api.py +++ b/ce/tb_ce_client/api/device_connectivity_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/device_controller_api.py b/ce/tb_ce_client/api/device_controller_api.py index 2070993d..5bb19764 100644 --- a/ce/tb_ce_client/api/device_controller_api.py +++ b/ce/tb_ce_client/api/device_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/device_profile_controller_api.py b/ce/tb_ce_client/api/device_profile_controller_api.py index 1f8aee30..9e99f2b1 100644 --- a/ce/tb_ce_client/api/device_profile_controller_api.py +++ b/ce/tb_ce_client/api/device_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/domain_controller_api.py b/ce/tb_ce_client/api/domain_controller_api.py index a1199ca4..7ede073d 100644 --- a/ce/tb_ce_client/api/domain_controller_api.py +++ b/ce/tb_ce_client/api/domain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/edge_controller_api.py b/ce/tb_ce_client/api/edge_controller_api.py index 1fdd6917..0321962b 100644 --- a/ce/tb_ce_client/api/edge_controller_api.py +++ b/ce/tb_ce_client/api/edge_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/edge_event_controller_api.py b/ce/tb_ce_client/api/edge_event_controller_api.py index a8efc9fb..9d7a2f1e 100644 --- a/ce/tb_ce_client/api/edge_event_controller_api.py +++ b/ce/tb_ce_client/api/edge_event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/entities_version_control_controller_api.py b/ce/tb_ce_client/api/entities_version_control_controller_api.py index bb6f6b6c..08fc5cb3 100644 --- a/ce/tb_ce_client/api/entities_version_control_controller_api.py +++ b/ce/tb_ce_client/api/entities_version_control_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/entity_query_controller_api.py b/ce/tb_ce_client/api/entity_query_controller_api.py index 11db9a69..cccd7924 100644 --- a/ce/tb_ce_client/api/entity_query_controller_api.py +++ b/ce/tb_ce_client/api/entity_query_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/entity_relation_controller_api.py b/ce/tb_ce_client/api/entity_relation_controller_api.py index 5ae3dafd..4a41634e 100644 --- a/ce/tb_ce_client/api/entity_relation_controller_api.py +++ b/ce/tb_ce_client/api/entity_relation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/entity_view_controller_api.py b/ce/tb_ce_client/api/entity_view_controller_api.py index a8f9805c..139c6a38 100644 --- a/ce/tb_ce_client/api/entity_view_controller_api.py +++ b/ce/tb_ce_client/api/entity_view_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/event_controller_api.py b/ce/tb_ce_client/api/event_controller_api.py index 549ccf2d..713193c1 100644 --- a/ce/tb_ce_client/api/event_controller_api.py +++ b/ce/tb_ce_client/api/event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/image_controller_api.py b/ce/tb_ce_client/api/image_controller_api.py index 05898ae0..e09f7b37 100644 --- a/ce/tb_ce_client/api/image_controller_api.py +++ b/ce/tb_ce_client/api/image_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/job_controller_api.py b/ce/tb_ce_client/api/job_controller_api.py index 87545b13..693878b4 100644 --- a/ce/tb_ce_client/api/job_controller_api.py +++ b/ce/tb_ce_client/api/job_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/login_endpoint_api.py b/ce/tb_ce_client/api/login_endpoint_api.py index 1cf613ef..8a8a68bc 100644 --- a/ce/tb_ce_client/api/login_endpoint_api.py +++ b/ce/tb_ce_client/api/login_endpoint_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/lwm2m_controller_api.py b/ce/tb_ce_client/api/lwm2m_controller_api.py index 0adcddca..a2c781c6 100644 --- a/ce/tb_ce_client/api/lwm2m_controller_api.py +++ b/ce/tb_ce_client/api/lwm2m_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/mail_config_template_controller_api.py b/ce/tb_ce_client/api/mail_config_template_controller_api.py index d754b5b9..44752d00 100644 --- a/ce/tb_ce_client/api/mail_config_template_controller_api.py +++ b/ce/tb_ce_client/api/mail_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/mobile_app_bundle_controller_api.py b/ce/tb_ce_client/api/mobile_app_bundle_controller_api.py index 887854c9..acc7591f 100644 --- a/ce/tb_ce_client/api/mobile_app_bundle_controller_api.py +++ b/ce/tb_ce_client/api/mobile_app_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/mobile_app_controller_api.py b/ce/tb_ce_client/api/mobile_app_controller_api.py index 605c84fe..42fbe7b8 100644 --- a/ce/tb_ce_client/api/mobile_app_controller_api.py +++ b/ce/tb_ce_client/api/mobile_app_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/notification_controller_api.py b/ce/tb_ce_client/api/notification_controller_api.py index f070fb26..cd3e84bd 100644 --- a/ce/tb_ce_client/api/notification_controller_api.py +++ b/ce/tb_ce_client/api/notification_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/notification_rule_controller_api.py b/ce/tb_ce_client/api/notification_rule_controller_api.py index 63502eca..c79443cf 100644 --- a/ce/tb_ce_client/api/notification_rule_controller_api.py +++ b/ce/tb_ce_client/api/notification_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/notification_target_controller_api.py b/ce/tb_ce_client/api/notification_target_controller_api.py index f18fd504..8f41f39b 100644 --- a/ce/tb_ce_client/api/notification_target_controller_api.py +++ b/ce/tb_ce_client/api/notification_target_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/notification_template_controller_api.py b/ce/tb_ce_client/api/notification_template_controller_api.py index 1e1db609..37f2b8e6 100644 --- a/ce/tb_ce_client/api/notification_template_controller_api.py +++ b/ce/tb_ce_client/api/notification_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/o_auth2_config_template_controller_api.py b/ce/tb_ce_client/api/o_auth2_config_template_controller_api.py index 5793462e..7c32ccf7 100644 --- a/ce/tb_ce_client/api/o_auth2_config_template_controller_api.py +++ b/ce/tb_ce_client/api/o_auth2_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/o_auth2_controller_api.py b/ce/tb_ce_client/api/o_auth2_controller_api.py index 444d7dad..8c923926 100644 --- a/ce/tb_ce_client/api/o_auth2_controller_api.py +++ b/ce/tb_ce_client/api/o_auth2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/ota_package_controller_api.py b/ce/tb_ce_client/api/ota_package_controller_api.py index 80ef734f..dc7b072f 100644 --- a/ce/tb_ce_client/api/ota_package_controller_api.py +++ b/ce/tb_ce_client/api/ota_package_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/qr_code_settings_controller_api.py b/ce/tb_ce_client/api/qr_code_settings_controller_api.py index f2101d14..e3927528 100644 --- a/ce/tb_ce_client/api/qr_code_settings_controller_api.py +++ b/ce/tb_ce_client/api/qr_code_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/queue_controller_api.py b/ce/tb_ce_client/api/queue_controller_api.py index 70806d5d..71a0d255 100644 --- a/ce/tb_ce_client/api/queue_controller_api.py +++ b/ce/tb_ce_client/api/queue_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/queue_stats_controller_api.py b/ce/tb_ce_client/api/queue_stats_controller_api.py index 04e5894d..ca6db0c9 100644 --- a/ce/tb_ce_client/api/queue_stats_controller_api.py +++ b/ce/tb_ce_client/api/queue_stats_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/rpc_v1_controller_api.py b/ce/tb_ce_client/api/rpc_v1_controller_api.py index 333b212f..12f6c58b 100644 --- a/ce/tb_ce_client/api/rpc_v1_controller_api.py +++ b/ce/tb_ce_client/api/rpc_v1_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/rpc_v2_controller_api.py b/ce/tb_ce_client/api/rpc_v2_controller_api.py index 96a36f36..f5b90525 100644 --- a/ce/tb_ce_client/api/rpc_v2_controller_api.py +++ b/ce/tb_ce_client/api/rpc_v2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/rule_chain_controller_api.py b/ce/tb_ce_client/api/rule_chain_controller_api.py index ca389628..c3214de1 100644 --- a/ce/tb_ce_client/api/rule_chain_controller_api.py +++ b/ce/tb_ce_client/api/rule_chain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/rule_engine_controller_api.py b/ce/tb_ce_client/api/rule_engine_controller_api.py index 7e01256c..9103baa4 100644 --- a/ce/tb_ce_client/api/rule_engine_controller_api.py +++ b/ce/tb_ce_client/api/rule_engine_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/tb_resource_controller_api.py b/ce/tb_ce_client/api/tb_resource_controller_api.py index 98e83f44..5d5d5ab8 100644 --- a/ce/tb_ce_client/api/tb_resource_controller_api.py +++ b/ce/tb_ce_client/api/tb_resource_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/telemetry_controller_api.py b/ce/tb_ce_client/api/telemetry_controller_api.py index 2e33ffe8..d1516ed4 100644 --- a/ce/tb_ce_client/api/telemetry_controller_api.py +++ b/ce/tb_ce_client/api/telemetry_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/tenant_controller_api.py b/ce/tb_ce_client/api/tenant_controller_api.py index 79c35b7e..b93db13c 100644 --- a/ce/tb_ce_client/api/tenant_controller_api.py +++ b/ce/tb_ce_client/api/tenant_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/tenant_profile_controller_api.py b/ce/tb_ce_client/api/tenant_profile_controller_api.py index 1015a06e..eb310af0 100644 --- a/ce/tb_ce_client/api/tenant_profile_controller_api.py +++ b/ce/tb_ce_client/api/tenant_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/trendz_controller_api.py b/ce/tb_ce_client/api/trendz_controller_api.py index 6771dbf2..3c3accd3 100644 --- a/ce/tb_ce_client/api/trendz_controller_api.py +++ b/ce/tb_ce_client/api/trendz_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/two_factor_auth_config_controller_api.py b/ce/tb_ce_client/api/two_factor_auth_config_controller_api.py index a35fe3e7..df99420b 100644 --- a/ce/tb_ce_client/api/two_factor_auth_config_controller_api.py +++ b/ce/tb_ce_client/api/two_factor_auth_config_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/two_factor_auth_controller_api.py b/ce/tb_ce_client/api/two_factor_auth_controller_api.py index b20a0b4f..721f48ad 100644 --- a/ce/tb_ce_client/api/two_factor_auth_controller_api.py +++ b/ce/tb_ce_client/api/two_factor_auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/ui_settings_controller_api.py b/ce/tb_ce_client/api/ui_settings_controller_api.py index b9f02bf1..fb103c9c 100644 --- a/ce/tb_ce_client/api/ui_settings_controller_api.py +++ b/ce/tb_ce_client/api/ui_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/usage_info_controller_api.py b/ce/tb_ce_client/api/usage_info_controller_api.py index ee766af0..f9c7de2d 100644 --- a/ce/tb_ce_client/api/usage_info_controller_api.py +++ b/ce/tb_ce_client/api/usage_info_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/user_controller_api.py b/ce/tb_ce_client/api/user_controller_api.py index 4fff5efa..4f5b8733 100644 --- a/ce/tb_ce_client/api/user_controller_api.py +++ b/ce/tb_ce_client/api/user_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/widget_type_controller_api.py b/ce/tb_ce_client/api/widget_type_controller_api.py index 3e6c34a3..d7ef184b 100644 --- a/ce/tb_ce_client/api/widget_type_controller_api.py +++ b/ce/tb_ce_client/api/widget_type_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api/widgets_bundle_controller_api.py b/ce/tb_ce_client/api/widgets_bundle_controller_api.py index cfdbc49c..3e1adb81 100644 --- a/ce/tb_ce_client/api/widgets_bundle_controller_api.py +++ b/ce/tb_ce_client/api/widgets_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/api_client.py b/ce/tb_ce_client/api_client.py index a92abf02..82d4946b 100644 --- a/ce/tb_ce_client/api_client.py +++ b/ce/tb_ce_client/api_client.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/ce/tb_ce_client/configuration.py b/ce/tb_ce_client/configuration.py index 5993b6a0..1aabd662 100644 --- a/ce/tb_ce_client/configuration.py +++ b/ce/tb_ce_client/configuration.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -549,7 +549,7 @@ def to_debug_report(self) -> str: return "Python SDK Debug Report:\n"\ "OS: {env}\n"\ "Python Version: {pyversion}\n"\ - "Version of the API: 4.3.1.2\n"\ + "Version of the API: 4.3.1.3\n"\ "SDK Package Version: 1.0.0".\ format(env=sys.platform, pyversion=sys.version) diff --git a/ce/tb_ce_client/exceptions.py b/ce/tb_ce_client/exceptions.py index df4aaa2f..781261fb 100644 --- a/ce/tb_ce_client/exceptions.py +++ b/ce/tb_ce_client/exceptions.py @@ -18,7 +18,7 @@ ThingsBoard open-source IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2 + The version of the OpenAPI document: 4.3.1.3 Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/docs/IntegrationControllerApi.md b/paas/docs/IntegrationControllerApi.md index 446fd3d8..0e0c875a 100644 --- a/paas/docs/IntegrationControllerApi.md +++ b/paas/docs/IntegrationControllerApi.md @@ -6,6 +6,7 @@ Integration client.assign_integration_to_edge(edge_id: str, integration_id: str) # Assign integration to edge (assignIntegrationToEdge) None client.check_integration_connection(integration: Integration) # Check integration connectivity (checkIntegrationConnection) None client.delete_integration(integration_id: str) # Delete integration (deleteIntegration) +bytearray client.export_integration_package(integration_id: str) # Export integration as IoT Hub package str client.find_all_related_edges_missing_attributes(integration_id: str) # Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes) str client.find_edge_missing_attributes(edge_id: str, integration_ids: List[str]) # Find edge missing attributes for assigned integrations (findEdgeMissingAttributes) PageDataIntegrationInfo client.get_edge_integration_infos(edge_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Edge Integrations (getEdgeIntegrationInfos) @@ -94,6 +95,30 @@ Deletes the integration and all the relations (from and to the integration). Ref None (empty response body) +## export_integration_package + +```python +bytearray client.export_integration_package(integration_id: str) +``` + +**GET** `/api/integration/{integrationId}/export-package` + +Export integration as IoT Hub package + +Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **integration_id** | **str** | | | + +### Return type + +**bytearray** + + ## find_all_related_edges_missing_attributes ```python diff --git a/paas/docs/SolutionControllerApi.md b/paas/docs/SolutionControllerApi.md deleted file mode 100644 index 3d30053c..00000000 --- a/paas/docs/SolutionControllerApi.md +++ /dev/null @@ -1,125 +0,0 @@ -# SolutionControllerApi - -`ThingsboardClient` methods: - -```python -TenantSolutionTemplateDetails client.get_solution_template_details(solution_template_id: str) # Get Solution template details (getSolutionTemplateDetails) -List[TenantSolutionTemplateInfo] client.get_solution_template_infos() # Get Solution templates (getSolutionTemplateInfos) -TenantSolutionTemplateInstructions client.get_solution_template_instructions(solution_template_id: str) # Get Solution Template Instructions (getSolutionTemplateInstructions) -SolutionInstallResponse client.install_solution_template(solution_template_id: str) # Install Solution Template (installSolutionTemplate) -None client.uninstall_solution_template(solution_template_id: str) # Uninstall Solution Template (uninstallSolutionTemplate) -``` - - -## get_solution_template_details - -```python -TenantSolutionTemplateDetails client.get_solution_template_details(solution_template_id: str) -``` - -**GET** `/api/solutions/templates/details/{solutionTemplateId}` - -Get Solution template details (getSolutionTemplateDetails) - -Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**TenantSolutionTemplateDetails** - - -## get_solution_template_infos - -```python -List[TenantSolutionTemplateInfo] client.get_solution_template_infos() -``` - -**GET** `/api/solutions/templates/infos` - -Get Solution templates (getSolutionTemplateInfos) - -Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - -### Return type - -**List[TenantSolutionTemplateInfo]** - - -## get_solution_template_instructions - -```python -TenantSolutionTemplateInstructions client.get_solution_template_instructions(solution_template_id: str) -``` - -**GET** `/api/solutions/templates/instructions/{solutionTemplateId}` - -Get Solution Template Instructions (getSolutionTemplateInstructions) - -Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**TenantSolutionTemplateInstructions** - - -## install_solution_template - -```python -SolutionInstallResponse client.install_solution_template(solution_template_id: str) -``` - -**POST** `/api/solutions/templates/{solutionTemplateId}/install` - -Install Solution Template (installSolutionTemplate) - -Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**SolutionInstallResponse** - - -## uninstall_solution_template - -```python -None client.uninstall_solution_template(solution_template_id: str) -``` - -**DELETE** `/api/solutions/templates/{solutionTemplateId}/delete` - -Uninstall Solution Template (uninstallSolutionTemplate) - -Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -None (empty response body) - diff --git a/paas/docs/SolutionInstallResponse.md b/paas/docs/SolutionInstallResponse.md deleted file mode 100644 index d50b87dd..00000000 --- a/paas/docs/SolutionInstallResponse.md +++ /dev/null @@ -1,35 +0,0 @@ - -# SolutionInstallResponse - -`tb_paas_client.models.SolutionInstallResponse` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **dashboard_group_id** | [**EntityGroupId**](EntityGroupId.md) | Id of the group that contains main dashboard of the solution | [optional] | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | Id of the main dashboard of the solution | [optional] | -| **public_id** | [**CustomerId**](CustomerId.md) | Id of the public customer if solution has public entities | [optional] | -| **main_dashboard_public** | **bool** | Is the main dashboard public | [optional] | -| **details** | **str** | Markdown with solution usage instructions | [optional] | -| **success** | **bool** | Indicates that template was installed successfully | [optional] | - - - -## Referenced Types - -> **EntityId types** (`AdminSettingsId`, `AiModelId`, `AlarmId`, `ApiKeyId`, `ApiUsageStateId`, `AssetId`, `AssetProfileId`, `BillingCustomerId`, `BlobEntityId`, `CalculatedFieldId`, `ConverterId`, `CouponId`, `CustomerId`, `DashboardId`, `DeviceId`, `DeviceProfileId`, `DomainId`, `EdgeId`, `EntityGroupId`, `EntityViewId`, `GroupPermissionId`, `IntegrationId`, `JobId`, `MobileAppBundleId`, `MobileAppId`, `NotificationId`, `NotificationRequestId`, `NotificationRuleId`, `NotificationTargetId`, `NotificationTemplateId`, `OAuth2ClientId`, `OtaPackageId`, `ProductId`, `QueueId`, `QueueStatsId`, `ReportId`, `ReportTemplateId`, `RoleId`, `RpcId`, `RuleChainId`, `RuleNodeId`, `SchedulerEventId`, `SecretId`, `SubscriptionAddonId`, `SubscriptionId`, `SubscriptionPlanId`, `TbResourceId`, `TenantId`, `TenantProfileId`, `UserId`, `WidgetTypeId`, `WidgetsBundleId`, etc.): `{entity_type: EntityType, id: UUID}` — all EntityId subtypes share this structure. - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.dashboard_group_id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `SolutionInstallResponse.model_validate(data)` or `SolutionInstallResponse.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/SolutionTemplateLevel.md b/paas/docs/SolutionTemplateLevel.md deleted file mode 100644 index 07388f90..00000000 --- a/paas/docs/SolutionTemplateLevel.md +++ /dev/null @@ -1,26 +0,0 @@ - -# SolutionTemplateLevel - -`tb_paas_client.models.SolutionTemplateLevel` - -## Enum Values - - -* `MAKER` (value: `'MAKER'`) - -* `PROTOTYPE` (value: `'PROTOTYPE'`) - -* `STARTUP` (value: `'STARTUP'`) - - - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `SolutionTemplateLevel.model_validate(data)` or `SolutionTemplateLevel.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/SubscriptionExceptionErrorCode.md b/paas/docs/SubscriptionExceptionErrorCode.md index ecf91042..9cbf8df4 100644 --- a/paas/docs/SubscriptionExceptionErrorCode.md +++ b/paas/docs/SubscriptionExceptionErrorCode.md @@ -20,8 +20,6 @@ Subscription error code * `NUMBER_6` (value: `6`) -* `NUMBER_7` (value: `7`) - --- diff --git a/paas/docs/TenantSolutionTemplateDetails.md b/paas/docs/TenantSolutionTemplateDetails.md deleted file mode 100644 index 7d878650..00000000 --- a/paas/docs/TenantSolutionTemplateDetails.md +++ /dev/null @@ -1,37 +0,0 @@ - -# TenantSolutionTemplateDetails - -`tb_paas_client.models.TenantSolutionTemplateDetails` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **id** | **str** | ID of the solution template | [optional] | -| **title** | **str** | Template Title | [optional] | -| **level** | [**SolutionTemplateLevel**](SolutionTemplateLevel.md) | Level of the subscription that is required to unlock the template | [optional] | -| **install_timeout_ms** | **int** | Timeout for the installation UI to wait while template is installing | [optional] | -| **tenant_telemetry_keys** | **List[str]** | What keys to delete during template uninstall | [optional] | -| **tenant_attribute_keys** | **List[str]** | What attributes to delete during template uninstall | [optional] | -| **image_urls** | **List[str]** | | [optional] | -| **highlights** | **str** | | [optional] | -| **description** | **str** | | [optional] | -| **installed** | **bool** | | [optional] | - - - -## Referenced Types - -#### SolutionTemplateLevel (enum) -`MAKER` | `PROTOTYPE` | `STARTUP` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateDetails.model_validate(data)` or `TenantSolutionTemplateDetails.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/TenantSolutionTemplateInfo.md b/paas/docs/TenantSolutionTemplateInfo.md deleted file mode 100644 index 0b31e4d0..00000000 --- a/paas/docs/TenantSolutionTemplateInfo.md +++ /dev/null @@ -1,38 +0,0 @@ - -# TenantSolutionTemplateInfo - -`tb_paas_client.models.TenantSolutionTemplateInfo` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **id** | **str** | ID of the solution template | [optional] | -| **title** | **str** | Template Title | [optional] | -| **level** | [**SolutionTemplateLevel**](SolutionTemplateLevel.md) | Level of the subscription that is required to unlock the template | [optional] | -| **install_timeout_ms** | **int** | Timeout for the installation UI to wait while template is installing | [optional] | -| **tenant_telemetry_keys** | **List[str]** | What keys to delete during template uninstall | [optional] | -| **tenant_attribute_keys** | **List[str]** | What attributes to delete during template uninstall | [optional] | -| **preview_image_url** | **str** | URL of the preview image | [optional] | -| **video_preview_image_url** | **str** | Video preview image URL | [optional] | -| **preview_mp4_url** | **str** | Video MP4 URL | [optional] | -| **preview_webm_url** | **str** | Video WEBM URL | [optional] | -| **installed** | **bool** | Indicates that template is already installed for the current tenant | [optional] | - - - -## Referenced Types - -#### SolutionTemplateLevel (enum) -`MAKER` | `PROTOTYPE` | `STARTUP` - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateInfo.model_validate(data)` or `TenantSolutionTemplateInfo.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/TenantSolutionTemplateInstructions.md b/paas/docs/TenantSolutionTemplateInstructions.md deleted file mode 100644 index 7001bf38..00000000 --- a/paas/docs/TenantSolutionTemplateInstructions.md +++ /dev/null @@ -1,34 +0,0 @@ - -# TenantSolutionTemplateInstructions - -`tb_paas_client.models.TenantSolutionTemplateInstructions` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **dashboard_group_id** | [**EntityGroupId**](EntityGroupId.md) | Id of the group that contains main dashboard of the solution | [optional] | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | Id of the main dashboard of the solution | [optional] | -| **public_id** | [**CustomerId**](CustomerId.md) | Id of the public customer if solution has public entities | [optional] | -| **main_dashboard_public** | **bool** | Is the main dashboard public | [optional] | -| **details** | **str** | Markdown with solution usage instructions | [optional] | - - - -## Referenced Types - -> **EntityId types** (`AdminSettingsId`, `AiModelId`, `AlarmId`, `ApiKeyId`, `ApiUsageStateId`, `AssetId`, `AssetProfileId`, `BillingCustomerId`, `BlobEntityId`, `CalculatedFieldId`, `ConverterId`, `CouponId`, `CustomerId`, `DashboardId`, `DeviceId`, `DeviceProfileId`, `DomainId`, `EdgeId`, `EntityGroupId`, `EntityViewId`, `GroupPermissionId`, `IntegrationId`, `JobId`, `MobileAppBundleId`, `MobileAppId`, `NotificationId`, `NotificationRequestId`, `NotificationRuleId`, `NotificationTargetId`, `NotificationTemplateId`, `OAuth2ClientId`, `OtaPackageId`, `ProductId`, `QueueId`, `QueueStatsId`, `ReportId`, `ReportTemplateId`, `RoleId`, `RpcId`, `RuleChainId`, `RuleNodeId`, `SchedulerEventId`, `SecretId`, `SubscriptionAddonId`, `SubscriptionId`, `SubscriptionPlanId`, `TbResourceId`, `TenantId`, `TenantProfileId`, `UserId`, `WidgetTypeId`, `WidgetsBundleId`, etc.): `{entity_type: EntityType, id: UUID}` — all EntityId subtypes share this structure. - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (52 values total) - ---- - -### Conventions - -- **Package:** `tb_paas_client.models` -- **Attribute access:** `obj.dashboard_group_id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateInstructions.model_validate(data)` or `TenantSolutionTemplateInstructions.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/paas/docs/ThingsboardCredentialsExpiredResponse.md b/paas/docs/ThingsboardCredentialsExpiredResponse.md index df7a1394..8961c396 100644 --- a/paas/docs/ThingsboardCredentialsExpiredResponse.md +++ b/paas/docs/ThingsboardCredentialsExpiredResponse.md @@ -27,7 +27,7 @@ `NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (13 values total) #### SubscriptionExceptionErrorCode (enum) -`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` +`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` --- diff --git a/paas/docs/ThingsboardErrorResponse.md b/paas/docs/ThingsboardErrorResponse.md index 41a0de0d..0631ebbd 100644 --- a/paas/docs/ThingsboardErrorResponse.md +++ b/paas/docs/ThingsboardErrorResponse.md @@ -26,7 +26,7 @@ `NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` | `NUMBER_8` | `NUMBER_9` | `NUMBER_10` | … (13 values total) #### SubscriptionExceptionErrorCode (enum) -`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` | `NUMBER_7` +`NUMBER_1` | `NUMBER_2` | `NUMBER_3` | `NUMBER_4` | `NUMBER_5` | `NUMBER_6` --- diff --git a/paas/spec/openapi.json b/paas/spec/openapi.json index 30c03fb7..24eb2428 100644 --- a/paas/spec/openapi.json +++ b/paas/spec/openapi.json @@ -12,7 +12,7 @@ "name": "Apache License Version 2.0", "url": "https://github.com/thingsboard/thingsboard/blob/master/LICENSE" }, - "version": "4.3.1.2.0PAAS" + "version": "4.3.1.3.0PAAS" }, "servers": [ { @@ -301,10 +301,6 @@ "name": "sign-up-controller", "description": "Sign Up Controller" }, - { - "name": "solution-controller", - "description": "Solution Controller" - }, { "name": "solution-export-import-controller", "description": "Solution Export Import Controller" @@ -4864,6 +4860,11 @@ "schema": { "type": "string" } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, "required": true @@ -5003,6 +5004,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -73476,86 +73478,22 @@ ] } }, - "/api/integrationInfos": { + "/api/integration/{integrationId}/export-package": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integration Infos (getIntegrationInfos)", - "description": "Returns a page of integration infos 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationInfos", + "summary": "Export integration as IoT Hub package", + "description": "Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO.", + "operationId": "exportIntegrationPackage", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template integrations", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "integrationId", + "in": "path", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration 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", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -73564,7 +73502,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "type": "string", + "format": "byte" } } } @@ -73700,14 +73639,14 @@ ] } }, - "/api/integrations": { + "/api/integrationInfos": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations (getIntegrations)", - "description": "Returns a page of integrations 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrations", + "summary": "Get Integration Infos (getIntegrationInfos)", + "description": "Returns a page of integration infos 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationInfos", "parameters": [ { "name": "isEdgeTemplate", @@ -73788,7 +73727,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/PageDataIntegrationInfo" } } } @@ -73924,24 +73863,95 @@ ] } }, - "/api/integrations/converters/info": { + "/api/integrations": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations Converters info (getIntegrationsConvertersInfo)", - "description": "Returns a JSON object containing information about existing tenant converters and converters available in library. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getIntegrationsConvertersInfo", + "summary": "Get Integrations (getIntegrations)", + "description": "Returns a page of integrations 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrations", + "parameters": [ + { + "name": "isEdgeTemplate", + "in": "query", + "description": "Fetch edge template integrations", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "string", + "minimum": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the integration 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", + "debugMode", + "allowCreateDevicesOrAssets", + "enabled", + "remote", + "routingKey", + "secret" + ] + } + }, + { + "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": "object", - "additionalProperties": { - "$ref": "#/components/schemas/IntegrationConvertersInfo" - } + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -74077,37 +74087,23 @@ ] } }, - "/api/integrations/list": { + "/api/integrations/converters/info": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations By Ids (getIntegrationsByIds)", - "description": "Requested integrations must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationsByIds", - "parameters": [ - { - "name": "integrationIds", - "in": "query", - "description": "A list of integration ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "summary": "Get Integrations Converters info (getIntegrationsConvertersInfo)", + "description": "Returns a JSON object containing information about existing tenant converters and converters available in library. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getIntegrationsConvertersInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Integration" + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/IntegrationConvertersInfo" } } } @@ -74244,22 +74240,25 @@ ] } }, - "/api/job/{id}": { + "/api/integrations/list": { "get": { "tags": [ - "job-controller" + "integration-controller" ], - "summary": "Get job by id (getJobById)", - "description": "Fetches job info by id.\n\nExample of a RUNNING CF_REPROCESSING job response:\n```json\n{\n \"id\": {\n \"entityType\": \"JOB\",\n \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\"\n },\n \"createdTime\": 1747053196590,\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\"\n },\n \"type\": \"CF_REPROCESSING\",\n \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\",\n \"entityId\": {\n \"entityType\": \"DEVICE_PROFILE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"status\": \"RUNNING\",\n \"configuration\": {\n \"type\": \"CF_REPROCESSING\",\n \"calculatedFieldId\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\"\n },\n \"startTs\": 1747051995760,\n \"endTs\": 1747052895760,\n \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"toReprocess\": null\n },\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CF_REPROCESSING job with failures:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 0,\n \"failedCount\": 2,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 1\"\n }\n }\n },\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 2\"\n }\n }\n }\n ],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a FAILED job result with general error:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": null,\n \"results\": [],\n \"generalError\": \"Timeout to find devices by profile\",\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CANCELLED job result:\n```json\n{\n ...,\n \"status\": \"CANCELLED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 15,\n \"failedCount\": 0,\n \"discardedCount\": 85,\n \"totalCount\": 100,\n \"results\": [],\n \"generalError\": null,\n \"cancellationTs\": 1747065908414\n }\n}\n\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getJobById", + "summary": "Get Integrations By Ids (getIntegrationsByIds)", + "description": "Requested integrations must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationsByIds", "parameters": [ { - "name": "id", - "in": "path", + "name": "integrationIds", + "in": "query", + "description": "A list of integration ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -74269,7 +74268,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "type": "array", + "items": { + "$ref": "#/components/schemas/Integration" + } } } } @@ -74403,13 +74405,16 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/job/{id}": { + "get": { "tags": [ "job-controller" ], - "summary": "deleteJob", - "operationId": "deleteJob", + "summary": "Get job by id (getJobById)", + "description": "Fetches job info by id.\n\nExample of a RUNNING CF_REPROCESSING job response:\n```json\n{\n \"id\": {\n \"entityType\": \"JOB\",\n \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\"\n },\n \"createdTime\": 1747053196590,\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\"\n },\n \"type\": \"CF_REPROCESSING\",\n \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\",\n \"entityId\": {\n \"entityType\": \"DEVICE_PROFILE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"status\": \"RUNNING\",\n \"configuration\": {\n \"type\": \"CF_REPROCESSING\",\n \"calculatedFieldId\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\"\n },\n \"startTs\": 1747051995760,\n \"endTs\": 1747052895760,\n \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"toReprocess\": null\n },\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CF_REPROCESSING job with failures:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 0,\n \"failedCount\": 2,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 1\"\n }\n }\n },\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 2\"\n }\n }\n }\n ],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a FAILED job result with general error:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": null,\n \"results\": [],\n \"generalError\": \"Timeout to find devices by profile\",\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CANCELLED job result:\n```json\n{\n ...,\n \"status\": \"CANCELLED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 15,\n \"failedCount\": 0,\n \"discardedCount\": 85,\n \"totalCount\": 100,\n \"results\": [],\n \"generalError\": null,\n \"cancellationTs\": 1747065908414\n }\n}\n\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getJobById", "parameters": [ { "name": "id", @@ -74423,7 +74428,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } }, "400": { "description": "Bad Request", @@ -74554,16 +74566,167 @@ "ApiKeyForm": [] } ] - } - }, - "/api/job/{id}/cancel": { - "post": { + }, + "delete": { "tags": [ "job-controller" ], - "summary": "Cancel job (cancelJob)", - "description": "Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING.\n\nFor a running job, all the tasks not yet processed will be discarded.\n\nSee the example of a cancelled job result in getJobById method description.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "cancelJob", + "summary": "deleteJob", + "operationId": "deleteJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "message": "Invalid UUID string: 123", + "errorCode": 31, + "status": 400, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "message": "Authentication failed", + "errorCode": 10, + "status": 401, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "status": 403, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "message": "Requested item wasn't found!", + "errorCode": 32, + "status": 404, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "message": "Too many requests for current tenant!", + "errorCode": 33, + "status": 429, + "subscriptionErrorCode": null, + "subscriptionEntry": null, + "subscriptionValue": null, + "timestamp": 1609459200000 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/job/{id}/cancel": { + "post": { + "tags": [ + "job-controller" + ], + "summary": "Cancel job (cancelJob)", + "description": "Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING.\n\nFor a running job, all the tasks not yet processed will be discarded.\n\nSee the example of a cancelled job result in getJobById method description.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "cancelJob", "parameters": [ { "name": "id", @@ -102592,410 +102755,77 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/secrets": { - "get": { - "tags": [ - "secret-controller" - ], - "summary": "Get Tenant Secret infos (getSecretInfos)", - "description": "Returns a page of secret infos 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": "getSecretInfos", - "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 secret name and description.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "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/PageDataSecretInfo" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/noauth/selfRegistration/privacyPolicy": { - "get": { - "tags": [ - "self-registration-controller" - ], - "summary": "Get Privacy Policy for Self Registration form (getPrivacyPolicy)", - "description": "Fetch the Privacy Policy based on the domain name from the request. Available for non-authorized users. ", - "operationId": "getPrivacyPolicy", - "parameters": [ - { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/PlatformType" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { + "/api/secrets": { "get": { "tags": [ - "self-registration-controller" + "secret-controller" ], - "summary": "Get Self Registration form parameters without authentication (getSignUpSelfRegistrationParams)", - "description": "Fetch the Self Registration parameters based on the domain name from the request. Available for non-authorized users. Contains the information to customize the sign-up form.", - "operationId": "getSignUpSelfRegistrationParams", + "summary": "Get Tenant Secret infos (getSecretInfos)", + "description": "Returns a page of secret infos 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": "getSecretInfos", "parameters": [ { - "name": "pkgName", + "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 secret name and description.", "required": false, "schema": { "type": "string" } }, { - "name": "platformType", + "name": "sortProperty", "in": "query", - "description": "Platform type", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string", "enum": [ - "ANDROID", - "IOS" + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] } } @@ -103006,7 +102836,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpSelfRegistrationParams" + "$ref": "#/components/schemas/PageDataSecretInfo" } } } @@ -103131,17 +102961,25 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/termsOfUse": { + "/api/noauth/selfRegistration/privacyPolicy": { "get": { "tags": [ "self-registration-controller" ], - "summary": "Get Terms of Use for Self Registration form (getTermsOfUse)", - "description": "Fetch the Terms of Use based on the domain name from the request. Available for non-authorized users. ", - "operationId": "getTermsOfUse", + "summary": "Get Privacy Policy for Self Registration form (getPrivacyPolicy)", + "description": "Fetch the Privacy Policy based on the domain name from the request. Available for non-authorized users. ", + "operationId": "getPrivacyPolicy", "parameters": [ { "name": "pkgName", @@ -103294,179 +103132,44 @@ } } }, - "/api/selfRegistration/selfRegistrationParams": { + "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { "get": { "tags": [ "self-registration-controller" ], - "summary": "Get Self Registration parameters (getSelfRegistrationParams)", - "description": "Fetch the Self Registration parameters object for the tenant of the current user. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getWebSelfRegistrationParams", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SelfRegistrationParams" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "message": "Invalid UUID string: 123", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ + "summary": "Get Self Registration form parameters without authentication (getSignUpSelfRegistrationParams)", + "description": "Fetch the Self Registration parameters based on the domain name from the request. Available for non-authorized users. Contains the information to customize the sign-up form.", + "operationId": "getSignUpSelfRegistrationParams", + "parameters": [ { - "HttpLoginForm": [] + "name": "pkgName", + "in": "query", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "platformType", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } - ] - }, - "post": { - "tags": [ - "self-registration-controller" ], - "summary": "Create Or Update Self Registration parameters (saveSelfRegistrationParams)", - "description": "Creates or Updates the Self Registration parameters. When creating, platform generates Admin Settings Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Admin Settings Id will be present in the response. Specify existing Admin Settings Id to update the Self Registration parameters. Referencing non-existing Admin Settings Id will cause 'Not Found' error.\n\nSelf Registration allows users to signup for using the platform and automatically create a Customer account for them. You may configure default dashboard and user roles that will be assigned for this Customer. This allows you to build out-of-the-box solutions for customers. Ability to white-label the login and main pages helps to brand the platform.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveWebSelfRegistrationParams", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" + "$ref": "#/components/schemas/SignUpSelfRegistrationParams" } } } @@ -103482,7 +103185,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -103591,25 +103294,45 @@ } } } - }, - "security": [ + } + } + }, + "/api/noauth/selfRegistration/termsOfUse": { + "get": { + "tags": [ + "self-registration-controller" + ], + "summary": "Get Terms of Use for Self Registration form (getTermsOfUse)", + "description": "Fetch the Terms of Use based on the domain name from the request. Available for non-authorized users. ", + "operationId": "getTermsOfUse", + "parameters": [ { - "HttpLoginForm": [] + "name": "pkgName", + "in": "query", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] + "name": "platform", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/PlatformType" + } } - ] - }, - "delete": { - "tags": [ - "self-registration-controller" ], - "summary": "deleteWebSelfRegistrationParams", - "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -103731,65 +103454,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/noauth/activateByEmailCode": { - "post": { + "/api/selfRegistration/selfRegistrationParams": { + "get": { "tags": [ - "sign-up-controller" - ], - "summary": "Activate and login using code from Email (activateUserByEmailCode)", - "description": "Activate the user using code(link) from the activation email and return the JWT Token. Sends the notification and email about user activation. Checks that user was not activated yet.", - "operationId": "activateUserByEmailCode", - "parameters": [ - { - "name": "emailCode", - "in": "query", - "description": "Activation token.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "pkgName", - "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } - } + "self-registration-controller" ], + "summary": "Get Self Registration parameters (getSelfRegistrationParams)", + "description": "Fetch the Self Registration parameters object for the tenant of the current user. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getWebSelfRegistrationParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/SelfRegistrationParams" } } } @@ -103805,7 +103487,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -103914,57 +103596,40 @@ } } } - } - } - }, - "/api/noauth/activateEmail": { - "get": { - "tags": [ - "sign-up-controller" - ], - "summary": "Activate User using code from Email (activateEmail)", - "description": "Activate the user using code(link) from the activation email. Validates the code an redirects according to the signup flow. Checks that user was not activated yet.", - "operationId": "activateEmail", - "parameters": [ - { - "name": "emailCode", - "in": "query", - "description": "Activation token.", - "required": true, - "schema": { - "type": "string" - } - }, + }, + "security": [ { - "name": "pkgName", - "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, - "schema": { - "type": "string" - } + "HttpLoginForm": [] }, { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } + "ApiKeyForm": [] } + ] + }, + "post": { + "tags": [ + "self-registration-controller" ], + "summary": "Create Or Update Self Registration parameters (saveSelfRegistrationParams)", + "description": "Creates or Updates the Self Registration parameters. When creating, platform generates Admin Settings Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Admin Settings Id will be present in the response. Specify existing Admin Settings Id to update the Self Registration parameters. Referencing non-existing Admin Settings Id will cause 'Not Found' error.\n\nSelf Registration allows users to signup for using the platform and automatically create a Customer account for them. You may configure default dashboard and user roles that will be assigned for this Customer. This allows you to build out-of-the-box solutions for customers. Ability to white-label the login and main pages helps to brand the platform.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveWebSelfRegistrationParams", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebSelfRegistrationParams" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/WebSelfRegistrationParams" } } } @@ -103980,7 +103645,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104089,58 +103754,25 @@ } } } - } - } - }, - "/api/noauth/cloud/activateByEmailCode": { - "post": { - "tags": [ - "sign-up-controller" - ], - "summary": "activateCloudUserByEmailCode", - "operationId": "activateCloudUserByEmailCode", - "parameters": [ - { - "name": "emailCode", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, + }, + "security": [ { - "name": "pkgName", - "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, - "schema": { - "type": "string" - } + "HttpLoginForm": [] }, { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } + "ApiKeyForm": [] } + ] + }, + "delete": { + "tags": [ + "self-registration-controller" ], + "summary": "deleteWebSelfRegistrationParams", + "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JwtPair" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -104153,7 +103785,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104262,20 +103894,30 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/cloud/activateEmail": { - "get": { + "/api/noauth/activateByEmailCode": { + "post": { "tags": [ "sign-up-controller" ], - "summary": "activateCloudEmail", - "operationId": "activateCloudEmail", + "summary": "Activate and login using code from Email (activateUserByEmailCode)", + "description": "Activate the user using code(link) from the activation email and return the JWT Token. Sends the notification and email about user activation. Checks that user was not activated yet.", + "operationId": "activateUserByEmailCode", "parameters": [ { "name": "emailCode", "in": "query", + "description": "Activation token.", "required": true, "schema": { "type": "string" @@ -104310,7 +103952,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/JwtPair" } } } @@ -104326,7 +103968,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -104438,24 +104080,33 @@ } } }, - "/api/noauth/cloud/login": { + "/api/noauth/activateEmail": { "get": { "tags": [ "sign-up-controller" ], - "summary": "Cloud mobile Login redirect (cloudMobileLogin)", - "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on cloud mobile app.", - "operationId": "cloudMobileLogin", + "summary": "Activate User using code from Email (activateEmail)", + "description": "Activate the user using code(link) from the activation email. Validates the code an redirects according to the signup flow. Checks that user was not activated yet.", + "operationId": "activateEmail", "parameters": [ { - "name": "pkgName", + "name": "emailCode", "in": "query", - "description": "Mobile app package name. Used to identify the application and build the redirect link.", + "description": "Activation token.", "required": true, "schema": { "type": "string" } }, + { + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, { "name": "platform", "in": "query", @@ -104604,16 +104255,16 @@ } } }, - "/api/noauth/cloud/resendEmailActivation": { + "/api/noauth/cloud/activateByEmailCode": { "post": { "tags": [ "sign-up-controller" ], - "summary": "resendCloudEmailActivation", - "operationId": "resendCloudEmailActivation", + "summary": "activateCloudUserByEmailCode", + "operationId": "activateCloudUserByEmailCode", "parameters": [ { - "name": "email", + "name": "emailCode", "in": "query", "required": true, "schema": { @@ -104623,6 +104274,7 @@ { "name": "pkgName", "in": "query", + "description": "Optional package name of the mobile application.", "required": false, "schema": { "type": "string" @@ -104644,7 +104296,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -104769,29 +104428,36 @@ } } }, - "/api/noauth/login": { + "/api/noauth/cloud/activateEmail": { "get": { "tags": [ "sign-up-controller" ], - "summary": "Mobile Login redirect (mobileLogin)", - "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on mobile app.", - "operationId": "mobileLogin", + "summary": "activateCloudEmail", + "operationId": "activateCloudEmail", "parameters": [ { - "name": "pkgName", + "name": "emailCode", "in": "query", - "description": "Mobile app package name. Used to identify the application and build the redirect link.", "required": true, "schema": { "type": "string" } }, + { + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, { "name": "platform", "in": "query", "description": "Platform type", - "required": true, + "required": false, "schema": { "type": "string", "enum": [ @@ -104935,30 +104601,20 @@ } } }, - "/api/noauth/resendEmailActivation": { - "post": { + "/api/noauth/cloud/login": { + "get": { "tags": [ "sign-up-controller" ], - "summary": "Resend Activation Email (resendEmailActivation)", - "description": "Request to resend the activation email for the user. Checks that user was not activated yet.", - "operationId": "resendEmailActivation", + "summary": "Cloud mobile Login redirect (cloudMobileLogin)", + "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on cloud mobile app.", + "operationId": "cloudMobileLogin", "parameters": [ - { - "name": "email", - "in": "query", - "description": "Email of the user.", - "required": true, - "schema": { - "type": "string" - }, - "example": "john.doe@company.com" - }, { "name": "pkgName", "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, + "description": "Mobile app package name. Used to identify the application and build the redirect link.", + "required": true, "schema": { "type": "string" } @@ -104979,7 +104635,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } }, "400": { "description": "Bad Request", @@ -104992,7 +104655,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105104,175 +104767,47 @@ } } }, - "/api/noauth/signup": { + "/api/noauth/cloud/resendEmailActivation": { "post": { "tags": [ "sign-up-controller" ], - "summary": "User Sign Up (signUp)", - "description": "Process user sign up request. Creates the Customer and corresponding User based on self Registration parameters for the domain. See [Self Registration Controller](/swagger-ui.html#/self-registration-controller) for more details. The result is either 'SUCCESS' or 'INACTIVE_USER_EXISTS'. If Success, the user will receive an email with instruction to activate the account. The content of the email is customizable via the mail templates.", - "operationId": "signUp", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SignUpRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SignUpResult" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "message": "Invalid request body", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + "summary": "resendCloudEmailActivation", + "operationId": "resendCloudEmailActivation", + "parameters": [ + { + "name": "email", + "in": "query", + "required": true, + "schema": { + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "pkgName", + "in": "query", + "required": false, + "schema": { + "type": "string" } }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] } } - } - } - }, - "/api/noauth/signup/recaptchaParams": { - "get": { - "tags": [ - "sign-up-controller" ], - "summary": "getRecaptchaParams", - "operationId": "getRecaptchaParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CaptchaClientParams" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -105285,7 +104820,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105397,21 +104932,45 @@ } } }, - "/api/signup/acceptPrivacyPolicy": { - "post": { + "/api/noauth/login": { + "get": { "tags": [ "sign-up-controller" ], - "summary": "Accept privacy policy (acceptPrivacyPolicy)", - "description": "Accept privacy policy by the current user.", - "operationId": "acceptPrivacyPolicy", + "summary": "Mobile Login redirect (mobileLogin)", + "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on mobile app.", + "operationId": "mobileLogin", + "parameters": [ + { + "name": "pkgName", + "in": "query", + "description": "Mobile app package name. Used to identify the application and build the redirect link.", + "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/JwtPair" + "type": "string" } } } @@ -105427,7 +104986,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -105536,34 +105095,54 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/signup/acceptPrivacyPolicyAndTermsOfUse": { + "/api/noauth/resendEmailActivation": { "post": { "tags": [ "sign-up-controller" ], - "summary": "acceptPrivacyPolicyAndTermsOfUse", - "operationId": "acceptPrivacyPolicyAndTermsOfUse", + "summary": "Resend Activation Email (resendEmailActivation)", + "description": "Request to resend the activation email for the user. Checks that user was not activated yet.", + "operationId": "resendEmailActivation", + "parameters": [ + { + "name": "email", + "in": "query", + "description": "Email of the user.", + "required": true, + "schema": { + "type": "string" + }, + "example": "john.doe@company.com" + }, + { + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JwtPair" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -105685,32 +105264,34 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/signup/acceptTermsOfUse": { + "/api/noauth/signup": { "post": { "tags": [ "sign-up-controller" ], - "summary": "Accept Terms of Use (acceptTermsOfUse)", - "description": "Accept Terms of Use by the current user.", - "operationId": "acceptTermsOfUse", + "summary": "User Sign Up (signUp)", + "description": "Process user sign up request. Creates the Customer and corresponding User based on self Registration parameters for the domain. See [Self Registration Controller](/swagger-ui.html#/self-registration-controller) for more details. The result is either 'SUCCESS' or 'INACTIVE_USER_EXISTS'. If Success, the user will receive an email with instruction to activate the account. The content of the email is customizable via the mail templates.", + "operationId": "signUp", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignUpRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/SignUpResult" } } } @@ -105835,31 +105416,23 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/signup/displayWelcome": { + "/api/noauth/signup/recaptchaParams": { "get": { "tags": [ "sign-up-controller" ], - "summary": "isDisplayWelcome", - "operationId": "isDisplayWelcome", + "summary": "getRecaptchaParams", + "operationId": "getRecaptchaParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/CaptchaClientParams" } } } @@ -105984,174 +105557,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/signup/notDisplayWelcome": { - "post": { - "tags": [ - "sign-up-controller" - ], - "summary": "setNotDisplayWelcome", - "operationId": "setNotDisplayWelcome", - "responses": { - "200": { - "description": "OK" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "message": "Invalid request body", - "errorCode": 31, - "status": 400, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "message": "Authentication failed", - "errorCode": 10, - "status": 401, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "status": 403, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "message": "Requested item wasn't found!", - "errorCode": 32, - "status": 404, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "message": "Too many requests for current tenant!", - "errorCode": 33, - "status": 429, - "subscriptionErrorCode": null, - "subscriptionEntry": null, - "subscriptionValue": null, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/signup/privacyPolicyAccepted": { - "get": { + "/api/signup/acceptPrivacyPolicy": { + "post": { "tags": [ "sign-up-controller" ], - "summary": "Check privacy policy (privacyPolicyAccepted)", - "description": "Checks that current user accepted the privacy policy.", - "operationId": "privacyPolicyAccepted", + "summary": "Accept privacy policy (acceptPrivacyPolicy)", + "description": "Accept privacy policy by the current user.", + "operationId": "acceptPrivacyPolicy", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/JwtPair" } } } @@ -106167,7 +105590,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -106287,25 +105710,23 @@ ] } }, - "/api/signup/tenantAccount": { + "/api/signup/acceptPrivacyPolicyAndTermsOfUse": { "post": { "tags": [ "sign-up-controller" ], - "summary": "deleteTenantAccount", - "operationId": "deleteTenantAccount", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteTenantRequest" - } - } - } - }, + "summary": "acceptPrivacyPolicyAndTermsOfUse", + "operationId": "acceptPrivacyPolicyAndTermsOfUse", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwtPair" + } + } + } }, "400": { "description": "Bad Request", @@ -106438,21 +105859,21 @@ ] } }, - "/api/signup/termsOfUseAccepted": { - "get": { + "/api/signup/acceptTermsOfUse": { + "post": { "tags": [ "sign-up-controller" ], - "summary": "Check Terms Of User (termsOfUseAccepted)", - "description": "Checks that current user accepted the privacy policy.", - "operationId": "termsOfUseAccepted", + "summary": "Accept Terms of Use (acceptTermsOfUse)", + "description": "Accept Terms of Use by the current user.", + "operationId": "acceptTermsOfUse", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/JwtPair" } } } @@ -106468,7 +105889,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -106588,32 +106009,20 @@ ] } }, - "/api/solutions/templates/details/{solutionTemplateId}": { + "/api/signup/displayWelcome": { "get": { "tags": [ - "solution-controller" - ], - "summary": "Get Solution template details (getSolutionTemplateDetails)", - "description": "Get a solution template details based on the provided id\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateDetails", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "isDisplayWelcome", + "operationId": "isDisplayWelcome", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateDetails" + "type": "boolean" } } } @@ -106749,27 +106158,16 @@ ] } }, - "/api/solutions/templates/infos": { - "get": { + "/api/signup/notDisplayWelcome": { + "post": { "tags": [ - "solution-controller" + "sign-up-controller" ], - "summary": "Get Solution templates (getSolutionTemplateInfos)", - "description": "Get a list of solution template descriptors\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateInfos", + "summary": "setNotDisplayWelcome", + "operationId": "setNotDisplayWelcome", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TenantSolutionTemplateInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -106782,7 +106180,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -106902,32 +106300,21 @@ ] } }, - "/api/solutions/templates/instructions/{solutionTemplateId}": { + "/api/signup/privacyPolicyAccepted": { "get": { "tags": [ - "solution-controller" - ], - "summary": "Get Solution Template Instructions (getSolutionTemplateInstructions)", - "description": "Get a solution template instructions based on the provided id\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateInstructions", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "Check privacy policy (privacyPolicyAccepted)", + "description": "Checks that current user accepted the privacy policy.", + "operationId": "privacyPolicyAccepted", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateInstructions" + "type": "boolean" } } } @@ -107063,25 +106450,22 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/delete": { - "delete": { + "/api/signup/tenantAccount": { + "post": { "tags": [ - "solution-controller" + "sign-up-controller" ], - "summary": "Uninstall Solution Template (uninstallSolutionTemplate)", - "description": "Uninstall solution template based on the provided id\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "uninstallSolutionTemplate", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "deleteTenantAccount", + "operationId": "deleteTenantAccount", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteTenantRequest" + } } } - ], + }, "responses": { "200": { "description": "OK" @@ -107097,7 +106481,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -107217,32 +106601,21 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/install": { - "post": { + "/api/signup/termsOfUseAccepted": { + "get": { "tags": [ - "solution-controller" - ], - "summary": "Install Solution Template (installSolutionTemplate)", - "description": "Install solution template based on the provided id\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "installSolutionTemplate", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "Check Terms Of User (termsOfUseAccepted)", + "description": "Checks that current user accepted the privacy policy.", + "operationId": "termsOfUseAccepted", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionInstallResponse" + "type": "boolean" } } } @@ -107258,7 +106631,7 @@ "error-code-400": { "summary": "Bad Request", "value": { - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "status": 400, "subscriptionErrorCode": null, @@ -159151,35 +158524,6 @@ } } }, - "SolutionInstallResponse": { - "type": "object", - "properties": { - "dashboardGroupId": { - "$ref": "#/components/schemas/EntityGroupId", - "description": "Id of the group that contains main dashboard of the solution" - }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "Id of the main dashboard of the solution" - }, - "publicId": { - "$ref": "#/components/schemas/CustomerId", - "description": "Id of the public customer if solution has public entities" - }, - "mainDashboardPublic": { - "type": "boolean", - "description": "Is the main dashboard public" - }, - "details": { - "type": "string", - "description": "Markdown with solution usage instructions" - }, - "success": { - "type": "boolean", - "description": "Indicates that template was installed successfully" - } - } - }, "SolutionStep": { "type": "string", "enum": [ @@ -159187,14 +158531,6 @@ "DASHBOARDS_CONFIGURATION" ] }, - "SolutionTemplateLevel": { - "type": "string", - "enum": [ - "MAKER", - "PROTOTYPE", - "STARTUP" - ] - }, "SolutionValidationResult": { "type": "object", "description": "Result of a solution validation (dry-run). Checks structural validity and dependency references without modifying any data.", @@ -159737,8 +159073,7 @@ 3, 4, 5, - 6, - 7 + 6 ] }, "SubscriptionId": { @@ -161198,144 +160533,6 @@ } } }, - "TenantSolutionTemplateDetails": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the solution template", - "example": "smart_office" - }, - "title": { - "type": "string", - "description": "Template Title", - "example": "Smart office" - }, - "level": { - "$ref": "#/components/schemas/SolutionTemplateLevel", - "description": "Level of the subscription that is required to unlock the template", - "example": "PROTOTYPE" - }, - "installTimeoutMs": { - "type": "integer", - "format": "int64", - "description": "Timeout for the installation UI to wait while template is installing" - }, - "tenantTelemetryKeys": { - "type": "array", - "description": "What keys to delete during template uninstall", - "items": { - "type": "string" - } - }, - "tenantAttributeKeys": { - "type": "array", - "description": "What attributes to delete during template uninstall", - "items": { - "type": "string" - } - }, - "imageUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "highlights": { - "type": "string" - }, - "description": { - "type": "string" - }, - "installed": { - "type": "boolean" - } - } - }, - "TenantSolutionTemplateInfo": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the solution template", - "example": "smart_office" - }, - "title": { - "type": "string", - "description": "Template Title", - "example": "Smart office" - }, - "level": { - "$ref": "#/components/schemas/SolutionTemplateLevel", - "description": "Level of the subscription that is required to unlock the template", - "example": "PROTOTYPE" - }, - "installTimeoutMs": { - "type": "integer", - "format": "int64", - "description": "Timeout for the installation UI to wait while template is installing" - }, - "tenantTelemetryKeys": { - "type": "array", - "description": "What keys to delete during template uninstall", - "items": { - "type": "string" - } - }, - "tenantAttributeKeys": { - "type": "array", - "description": "What attributes to delete during template uninstall", - "items": { - "type": "string" - } - }, - "previewImageUrl": { - "type": "string", - "description": "URL of the preview image" - }, - "videoPreviewImageUrl": { - "type": "string", - "description": "Video preview image URL" - }, - "previewMp4Url": { - "type": "string", - "description": "Video MP4 URL" - }, - "previewWebmUrl": { - "type": "string", - "description": "Video WEBM URL" - }, - "installed": { - "type": "boolean", - "description": "Indicates that template is already installed for the current tenant" - } - } - }, - "TenantSolutionTemplateInstructions": { - "type": "object", - "properties": { - "dashboardGroupId": { - "$ref": "#/components/schemas/EntityGroupId", - "description": "Id of the group that contains main dashboard of the solution" - }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "Id of the main dashboard of the solution" - }, - "publicId": { - "$ref": "#/components/schemas/CustomerId", - "description": "Id of the public customer if solution has public entities" - }, - "mainDashboardPublic": { - "type": "boolean", - "description": "Is the main dashboard public" - }, - "details": { - "type": "string", - "description": "Markdown with solution usage instructions" - } - } - }, "TestSmsRequest": { "type": "object", "description": "A JSON value representing the Test SMS request.", diff --git a/paas/tb_paas_client/__init__.py b/paas/tb_paas_client/__init__.py index a1aba50d..747ca93a 100644 --- a/paas/tb_paas_client/__init__.py +++ b/paas/tb_paas_client/__init__.py @@ -106,7 +106,6 @@ from tb_paas_client.api.secret_controller_api import SecretControllerApi from tb_paas_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_paas_client.api.sign_up_controller_api import SignUpControllerApi - from tb_paas_client.api.solution_controller_api import SolutionControllerApi from tb_paas_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_paas_client.api.subscription_controller_api import SubscriptionControllerApi from tb_paas_client.api.tb_resource_controller_api import TbResourceControllerApi @@ -921,9 +920,7 @@ from tb_paas_client.models.solution_export_request import SolutionExportRequest from tb_paas_client.models.solution_export_response import SolutionExportResponse from tb_paas_client.models.solution_import_result import SolutionImportResult - from tb_paas_client.models.solution_install_response import SolutionInstallResponse from tb_paas_client.models.solution_step import SolutionStep - from tb_paas_client.models.solution_template_level import SolutionTemplateLevel from tb_paas_client.models.solution_validation_result import SolutionValidationResult from tb_paas_client.models.specific_time_schedule import SpecificTimeSchedule from tb_paas_client.models.split_view_component import SplitViewComponent @@ -984,9 +981,6 @@ from tb_paas_client.models.tenant_profile_data import TenantProfileData from tb_paas_client.models.tenant_profile_id import TenantProfileId from tb_paas_client.models.tenant_profile_queue_configuration import TenantProfileQueueConfiguration - from tb_paas_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails - from tb_paas_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo - from tb_paas_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions from tb_paas_client.models.test_sms_request import TestSmsRequest from tb_paas_client.models.text_alignment import TextAlignment from tb_paas_client.models.thingsboard_credentials_expired_response import ThingsboardCredentialsExpiredResponse @@ -1164,7 +1158,6 @@ "SecretControllerApi": "tb_paas_client.api.secret_controller_api", "SelfRegistrationControllerApi": "tb_paas_client.api.self_registration_controller_api", "SignUpControllerApi": "tb_paas_client.api.sign_up_controller_api", - "SolutionControllerApi": "tb_paas_client.api.solution_controller_api", "SolutionExportImportControllerApi": "tb_paas_client.api.solution_export_import_controller_api", "SubscriptionControllerApi": "tb_paas_client.api.subscription_controller_api", "TbResourceControllerApi": "tb_paas_client.api.tb_resource_controller_api", @@ -1979,9 +1972,7 @@ "SolutionExportRequest": "tb_paas_client.models.solution_export_request", "SolutionExportResponse": "tb_paas_client.models.solution_export_response", "SolutionImportResult": "tb_paas_client.models.solution_import_result", - "SolutionInstallResponse": "tb_paas_client.models.solution_install_response", "SolutionStep": "tb_paas_client.models.solution_step", - "SolutionTemplateLevel": "tb_paas_client.models.solution_template_level", "SolutionValidationResult": "tb_paas_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_paas_client.models.specific_time_schedule", "SplitViewComponent": "tb_paas_client.models.split_view_component", @@ -2042,9 +2033,6 @@ "TenantProfileData": "tb_paas_client.models.tenant_profile_data", "TenantProfileId": "tb_paas_client.models.tenant_profile_id", "TenantProfileQueueConfiguration": "tb_paas_client.models.tenant_profile_queue_configuration", - "TenantSolutionTemplateDetails": "tb_paas_client.models.tenant_solution_template_details", - "TenantSolutionTemplateInfo": "tb_paas_client.models.tenant_solution_template_info", - "TenantSolutionTemplateInstructions": "tb_paas_client.models.tenant_solution_template_instructions", "TestSmsRequest": "tb_paas_client.models.test_sms_request", "TextAlignment": "tb_paas_client.models.text_alignment", "ThingsboardCredentialsExpiredResponse": "tb_paas_client.models.thingsboard_credentials_expired_response", diff --git a/paas/tb_paas_client/_controller_map.py b/paas/tb_paas_client/_controller_map.py index 078367c2..025ce065 100644 --- a/paas/tb_paas_client/_controller_map.py +++ b/paas/tb_paas_client/_controller_map.py @@ -430,6 +430,9 @@ "export_image": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "export_image_with_http_info": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), "export_image_without_preload_content": ("tb_paas_client.api.image_controller_api", "ImageControllerApi"), + "export_integration_package": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), + "export_integration_package_with_http_info": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), + "export_integration_package_without_preload_content": ("tb_paas_client.api.integration_controller_api", "IntegrationControllerApi"), "export_rule_chains": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "export_rule_chains_with_http_info": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "export_rule_chains_without_preload_content": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), @@ -1397,15 +1400,6 @@ "get_sign_up_self_registration_params_with_http_info": ("tb_paas_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "get_sign_up_self_registration_params_without_preload_content": ("tb_paas_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "get_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "get_solution_template_details": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_details_with_http_info": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_details_without_preload_content": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos_with_http_info": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos_without_preload_content": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions_with_http_info": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions_without_preload_content": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), "get_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "get_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "get_solutions": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), @@ -1712,9 +1706,6 @@ "import_solution_with_http_info": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "import_solution_without_preload_content": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "install_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "install_solution_template": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "install_solution_template_with_http_info": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "install_solution_template_without_preload_content": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), "install_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "install_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "is_customer_white_labeling_allowed": ("tb_paas_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -2234,9 +2225,6 @@ "unassign_scheduler_event_from_edge_with_http_info": ("tb_paas_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "unassign_scheduler_event_from_edge_without_preload_content": ("tb_paas_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "uninstall_solution": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "uninstall_solution_template": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "uninstall_solution_template_with_http_info": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), - "uninstall_solution_template_without_preload_content": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), "uninstall_solution_with_http_info": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "uninstall_solution_without_preload_content": ("tb_paas_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "unset_auto_assign_to_edge_rule_chain": ("tb_paas_client.api.rule_chain_controller_api", "RuleChainControllerApi"), @@ -2393,7 +2381,6 @@ "secret_controller": ("tb_paas_client.api.secret_controller_api", "SecretControllerApi"), "self_registration_controller": ("tb_paas_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "sign_up_controller": ("tb_paas_client.api.sign_up_controller_api", "SignUpControllerApi"), - "solution_controller": ("tb_paas_client.api.solution_controller_api", "SolutionControllerApi"), "solution_export_import_controller": ("tb_paas_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "subscription_controller": ("tb_paas_client.api.subscription_controller_api", "SubscriptionControllerApi"), "tb_resource_controller": ("tb_paas_client.api.tb_resource_controller_api", "TbResourceControllerApi"), diff --git a/paas/tb_paas_client/api/__init__.py b/paas/tb_paas_client/api/__init__.py index 703c0fd7..0b9df895 100644 --- a/paas/tb_paas_client/api/__init__.py +++ b/paas/tb_paas_client/api/__init__.py @@ -87,7 +87,6 @@ "SecretControllerApi", "SelfRegistrationControllerApi", "SignUpControllerApi", - "SolutionControllerApi", "SolutionExportImportControllerApi", "SubscriptionControllerApi", "TbResourceControllerApi", @@ -179,7 +178,6 @@ from tb_paas_client.api.secret_controller_api import SecretControllerApi from tb_paas_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_paas_client.api.sign_up_controller_api import SignUpControllerApi - from tb_paas_client.api.solution_controller_api import SolutionControllerApi from tb_paas_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_paas_client.api.subscription_controller_api import SubscriptionControllerApi from tb_paas_client.api.tb_resource_controller_api import TbResourceControllerApi @@ -270,7 +268,6 @@ "SecretControllerApi": "tb_paas_client.api.secret_controller_api", "SelfRegistrationControllerApi": "tb_paas_client.api.self_registration_controller_api", "SignUpControllerApi": "tb_paas_client.api.sign_up_controller_api", - "SolutionControllerApi": "tb_paas_client.api.solution_controller_api", "SolutionExportImportControllerApi": "tb_paas_client.api.solution_export_import_controller_api", "SubscriptionControllerApi": "tb_paas_client.api.subscription_controller_api", "TbResourceControllerApi": "tb_paas_client.api.tb_resource_controller_api", diff --git a/paas/tb_paas_client/api/admin_controller_api.py b/paas/tb_paas_client/api/admin_controller_api.py index 4a3a4ba9..4c553fe6 100644 --- a/paas/tb_paas_client/api/admin_controller_api.py +++ b/paas/tb_paas_client/api/admin_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ai_chat_controller_api.py b/paas/tb_paas_client/api/ai_chat_controller_api.py index 004c12ee..bbdc8ea4 100644 --- a/paas/tb_paas_client/api/ai_chat_controller_api.py +++ b/paas/tb_paas_client/api/ai_chat_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -1183,7 +1183,7 @@ def send_chat_message( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> List[object]: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1215,6 +1215,7 @@ def send_chat_message( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1266,7 +1267,7 @@ def send_chat_message_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[List[object]]: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1298,6 +1299,7 @@ def send_chat_message_with_http_info( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1349,7 +1351,7 @@ def send_chat_message_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1381,6 +1383,7 @@ def send_chat_message_without_preload_content( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1465,7 +1468,8 @@ def _send_chat_message_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'text/plain' + 'text/plain', + 'application/json' ] ) ) diff --git a/paas/tb_paas_client/api/ai_device_dashboard_controller_api.py b/paas/tb_paas_client/api/ai_device_dashboard_controller_api.py index bd21004b..f2e10a88 100644 --- a/paas/tb_paas_client/api/ai_device_dashboard_controller_api.py +++ b/paas/tb_paas_client/api/ai_device_dashboard_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ai_model_controller_api.py b/paas/tb_paas_client/api/ai_model_controller_api.py index 124f1477..35c45d40 100644 --- a/paas/tb_paas_client/api/ai_model_controller_api.py +++ b/paas/tb_paas_client/api/ai_model_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ai_solution_controller_api.py b/paas/tb_paas_client/api/ai_solution_controller_api.py index 6ea947f9..c3b2c9eb 100644 --- a/paas/tb_paas_client/api/ai_solution_controller_api.py +++ b/paas/tb_paas_client/api/ai_solution_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ai_tool_controller_api.py b/paas/tb_paas_client/api/ai_tool_controller_api.py index f9f6427f..88bbd1db 100644 --- a/paas/tb_paas_client/api/ai_tool_controller_api.py +++ b/paas/tb_paas_client/api/ai_tool_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/alarm_comment_controller_api.py b/paas/tb_paas_client/api/alarm_comment_controller_api.py index a050ae3d..47c008f8 100644 --- a/paas/tb_paas_client/api/alarm_comment_controller_api.py +++ b/paas/tb_paas_client/api/alarm_comment_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/alarm_controller_api.py b/paas/tb_paas_client/api/alarm_controller_api.py index b87bbb32..8a3e4ffb 100644 --- a/paas/tb_paas_client/api/alarm_controller_api.py +++ b/paas/tb_paas_client/api/alarm_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/alarm_rule_controller_api.py b/paas/tb_paas_client/api/alarm_rule_controller_api.py index f6fec3f8..8459e525 100644 --- a/paas/tb_paas_client/api/alarm_rule_controller_api.py +++ b/paas/tb_paas_client/api/alarm_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/api_key_controller_api.py b/paas/tb_paas_client/api/api_key_controller_api.py index 0b295d97..7f2edcde 100644 --- a/paas/tb_paas_client/api/api_key_controller_api.py +++ b/paas/tb_paas_client/api/api_key_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/asset_controller_api.py b/paas/tb_paas_client/api/asset_controller_api.py index e05b7ddf..67d7f272 100644 --- a/paas/tb_paas_client/api/asset_controller_api.py +++ b/paas/tb_paas_client/api/asset_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/asset_profile_controller_api.py b/paas/tb_paas_client/api/asset_profile_controller_api.py index 5b40c22a..e30e5f25 100644 --- a/paas/tb_paas_client/api/asset_profile_controller_api.py +++ b/paas/tb_paas_client/api/asset_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/audit_log_controller_api.py b/paas/tb_paas_client/api/audit_log_controller_api.py index 0446ca14..1db42197 100644 --- a/paas/tb_paas_client/api/audit_log_controller_api.py +++ b/paas/tb_paas_client/api/audit_log_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/auth_controller_api.py b/paas/tb_paas_client/api/auth_controller_api.py index b260c432..c135c2f2 100644 --- a/paas/tb_paas_client/api/auth_controller_api.py +++ b/paas/tb_paas_client/api/auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/billing_endpoint_controller_api.py b/paas/tb_paas_client/api/billing_endpoint_controller_api.py index 39a40c87..41290056 100644 --- a/paas/tb_paas_client/api/billing_endpoint_controller_api.py +++ b/paas/tb_paas_client/api/billing_endpoint_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/blob_entity_controller_api.py b/paas/tb_paas_client/api/blob_entity_controller_api.py index 7731351b..377d3b01 100644 --- a/paas/tb_paas_client/api/blob_entity_controller_api.py +++ b/paas/tb_paas_client/api/blob_entity_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/calculated_field_controller_api.py b/paas/tb_paas_client/api/calculated_field_controller_api.py index 0e6d813d..f4f3f62b 100644 --- a/paas/tb_paas_client/api/calculated_field_controller_api.py +++ b/paas/tb_paas_client/api/calculated_field_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/cloud_endpoint_controller_api.py b/paas/tb_paas_client/api/cloud_endpoint_controller_api.py index 60e2f3d6..9f2b1b02 100644 --- a/paas/tb_paas_client/api/cloud_endpoint_controller_api.py +++ b/paas/tb_paas_client/api/cloud_endpoint_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/component_descriptor_controller_api.py b/paas/tb_paas_client/api/component_descriptor_controller_api.py index 61598544..c10d3c41 100644 --- a/paas/tb_paas_client/api/component_descriptor_controller_api.py +++ b/paas/tb_paas_client/api/component_descriptor_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/converter_controller_api.py b/paas/tb_paas_client/api/converter_controller_api.py index 458e1e93..d9bea551 100644 --- a/paas/tb_paas_client/api/converter_controller_api.py +++ b/paas/tb_paas_client/api/converter_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/converter_library_controller_api.py b/paas/tb_paas_client/api/converter_library_controller_api.py index 5f62dd03..b3d2c80d 100644 --- a/paas/tb_paas_client/api/converter_library_controller_api.py +++ b/paas/tb_paas_client/api/converter_library_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/custom_menu_controller_api.py b/paas/tb_paas_client/api/custom_menu_controller_api.py index 2523b8a4..c3f8a1b7 100644 --- a/paas/tb_paas_client/api/custom_menu_controller_api.py +++ b/paas/tb_paas_client/api/custom_menu_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/custom_translation_controller_api.py b/paas/tb_paas_client/api/custom_translation_controller_api.py index e30077de..316841be 100644 --- a/paas/tb_paas_client/api/custom_translation_controller_api.py +++ b/paas/tb_paas_client/api/custom_translation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/customer_controller_api.py b/paas/tb_paas_client/api/customer_controller_api.py index 5d30fbb0..bfa17b24 100644 --- a/paas/tb_paas_client/api/customer_controller_api.py +++ b/paas/tb_paas_client/api/customer_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/dashboard_controller_api.py b/paas/tb_paas_client/api/dashboard_controller_api.py index 4edd2ae1..373e643b 100644 --- a/paas/tb_paas_client/api/dashboard_controller_api.py +++ b/paas/tb_paas_client/api/dashboard_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/dashboard_report_controller_api.py b/paas/tb_paas_client/api/dashboard_report_controller_api.py index d0ba29a8..61571706 100644 --- a/paas/tb_paas_client/api/dashboard_report_controller_api.py +++ b/paas/tb_paas_client/api/dashboard_report_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/device_connectivity_controller_api.py b/paas/tb_paas_client/api/device_connectivity_controller_api.py index 9ff1b992..85615e22 100644 --- a/paas/tb_paas_client/api/device_connectivity_controller_api.py +++ b/paas/tb_paas_client/api/device_connectivity_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/device_controller_api.py b/paas/tb_paas_client/api/device_controller_api.py index d53ed48c..88179e4d 100644 --- a/paas/tb_paas_client/api/device_controller_api.py +++ b/paas/tb_paas_client/api/device_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/device_group_ota_package_controller_api.py b/paas/tb_paas_client/api/device_group_ota_package_controller_api.py index 621e412e..43ce43ea 100644 --- a/paas/tb_paas_client/api/device_group_ota_package_controller_api.py +++ b/paas/tb_paas_client/api/device_group_ota_package_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/device_profile_controller_api.py b/paas/tb_paas_client/api/device_profile_controller_api.py index 65740b7b..672ded78 100644 --- a/paas/tb_paas_client/api/device_profile_controller_api.py +++ b/paas/tb_paas_client/api/device_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/domain_controller_api.py b/paas/tb_paas_client/api/domain_controller_api.py index 89b12e6b..3b6566d1 100644 --- a/paas/tb_paas_client/api/domain_controller_api.py +++ b/paas/tb_paas_client/api/domain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/edge_controller_api.py b/paas/tb_paas_client/api/edge_controller_api.py index b725409b..013253de 100644 --- a/paas/tb_paas_client/api/edge_controller_api.py +++ b/paas/tb_paas_client/api/edge_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/edge_event_controller_api.py b/paas/tb_paas_client/api/edge_event_controller_api.py index 50c88a84..7db61586 100644 --- a/paas/tb_paas_client/api/edge_event_controller_api.py +++ b/paas/tb_paas_client/api/edge_event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/entities_version_control_controller_api.py b/paas/tb_paas_client/api/entities_version_control_controller_api.py index 8384fb97..0776cbcf 100644 --- a/paas/tb_paas_client/api/entities_version_control_controller_api.py +++ b/paas/tb_paas_client/api/entities_version_control_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/entity_group_controller_api.py b/paas/tb_paas_client/api/entity_group_controller_api.py index 7ff8be75..57109111 100644 --- a/paas/tb_paas_client/api/entity_group_controller_api.py +++ b/paas/tb_paas_client/api/entity_group_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/entity_query_controller_api.py b/paas/tb_paas_client/api/entity_query_controller_api.py index 282508e9..82b93f40 100644 --- a/paas/tb_paas_client/api/entity_query_controller_api.py +++ b/paas/tb_paas_client/api/entity_query_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/entity_relation_controller_api.py b/paas/tb_paas_client/api/entity_relation_controller_api.py index d6481dcd..a92ddb50 100644 --- a/paas/tb_paas_client/api/entity_relation_controller_api.py +++ b/paas/tb_paas_client/api/entity_relation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/entity_view_controller_api.py b/paas/tb_paas_client/api/entity_view_controller_api.py index cc78fe85..9f63fba8 100644 --- a/paas/tb_paas_client/api/entity_view_controller_api.py +++ b/paas/tb_paas_client/api/entity_view_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/event_controller_api.py b/paas/tb_paas_client/api/event_controller_api.py index de20bb18..4867a85e 100644 --- a/paas/tb_paas_client/api/event_controller_api.py +++ b/paas/tb_paas_client/api/event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/group_permission_controller_api.py b/paas/tb_paas_client/api/group_permission_controller_api.py index b1fa74aa..8dc455ce 100644 --- a/paas/tb_paas_client/api/group_permission_controller_api.py +++ b/paas/tb_paas_client/api/group_permission_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/image_controller_api.py b/paas/tb_paas_client/api/image_controller_api.py index f0f4a9f8..433ac4d6 100644 --- a/paas/tb_paas_client/api/image_controller_api.py +++ b/paas/tb_paas_client/api/image_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/integration_controller_api.py b/paas/tb_paas_client/api/integration_controller_api.py index 8826dc81..286ec148 100644 --- a/paas/tb_paas_client/api/integration_controller_api.py +++ b/paas/tb_paas_client/api/integration_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -31,8 +31,8 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Dict, List, Optional +from pydantic import Field, StrictBool, StrictBytes, StrictInt, StrictStr, field_validator +from typing import Dict, List, Optional, Union from typing_extensions import Annotated from tb_paas_client.models.integration import Integration from tb_paas_client.models.integration_converters_info import IntegrationConvertersInfo @@ -916,6 +916,283 @@ def _delete_integration_serialize( + @validate_call + def export_integration_package( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> bytearray: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def export_integration_package_with_http_info( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[bytearray]: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def export_integration_package_without_preload_content( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _export_integration_package_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params['integrationId'] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/integration/{integrationId}/export-package', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def find_all_related_edges_missing_attributes( self, diff --git a/paas/tb_paas_client/api/job_controller_api.py b/paas/tb_paas_client/api/job_controller_api.py index 2b0d2e12..1dde0fe4 100644 --- a/paas/tb_paas_client/api/job_controller_api.py +++ b/paas/tb_paas_client/api/job_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/login_endpoint_api.py b/paas/tb_paas_client/api/login_endpoint_api.py index 533daab4..ed2003cf 100644 --- a/paas/tb_paas_client/api/login_endpoint_api.py +++ b/paas/tb_paas_client/api/login_endpoint_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/lwm2m_controller_api.py b/paas/tb_paas_client/api/lwm2m_controller_api.py index cce493c8..9a52c893 100644 --- a/paas/tb_paas_client/api/lwm2m_controller_api.py +++ b/paas/tb_paas_client/api/lwm2m_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/mail_config_template_controller_api.py b/paas/tb_paas_client/api/mail_config_template_controller_api.py index e44c676f..a7475f91 100644 --- a/paas/tb_paas_client/api/mail_config_template_controller_api.py +++ b/paas/tb_paas_client/api/mail_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/mobile_app_bundle_controller_api.py b/paas/tb_paas_client/api/mobile_app_bundle_controller_api.py index 227e2100..aa37f30a 100644 --- a/paas/tb_paas_client/api/mobile_app_bundle_controller_api.py +++ b/paas/tb_paas_client/api/mobile_app_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/mobile_app_controller_api.py b/paas/tb_paas_client/api/mobile_app_controller_api.py index 8b154c18..b9c04ac3 100644 --- a/paas/tb_paas_client/api/mobile_app_controller_api.py +++ b/paas/tb_paas_client/api/mobile_app_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/notification_controller_api.py b/paas/tb_paas_client/api/notification_controller_api.py index 7dffcb30..959d7c43 100644 --- a/paas/tb_paas_client/api/notification_controller_api.py +++ b/paas/tb_paas_client/api/notification_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/notification_rule_controller_api.py b/paas/tb_paas_client/api/notification_rule_controller_api.py index ec2dbf2e..7560815a 100644 --- a/paas/tb_paas_client/api/notification_rule_controller_api.py +++ b/paas/tb_paas_client/api/notification_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/notification_target_controller_api.py b/paas/tb_paas_client/api/notification_target_controller_api.py index f59e58a8..6e6adc1b 100644 --- a/paas/tb_paas_client/api/notification_target_controller_api.py +++ b/paas/tb_paas_client/api/notification_target_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/notification_template_controller_api.py b/paas/tb_paas_client/api/notification_template_controller_api.py index 7bf557ec..1c5c4cad 100644 --- a/paas/tb_paas_client/api/notification_template_controller_api.py +++ b/paas/tb_paas_client/api/notification_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/o_auth2_config_template_controller_api.py b/paas/tb_paas_client/api/o_auth2_config_template_controller_api.py index fc88955d..55309a9a 100644 --- a/paas/tb_paas_client/api/o_auth2_config_template_controller_api.py +++ b/paas/tb_paas_client/api/o_auth2_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/o_auth2_controller_api.py b/paas/tb_paas_client/api/o_auth2_controller_api.py index 3602b8fb..02866303 100644 --- a/paas/tb_paas_client/api/o_auth2_controller_api.py +++ b/paas/tb_paas_client/api/o_auth2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ota_package_controller_api.py b/paas/tb_paas_client/api/ota_package_controller_api.py index 501fba66..9ceb0f41 100644 --- a/paas/tb_paas_client/api/ota_package_controller_api.py +++ b/paas/tb_paas_client/api/ota_package_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/owner_controller_api.py b/paas/tb_paas_client/api/owner_controller_api.py index 41f67a50..7bb2d2d1 100644 --- a/paas/tb_paas_client/api/owner_controller_api.py +++ b/paas/tb_paas_client/api/owner_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/qr_code_settings_controller_api.py b/paas/tb_paas_client/api/qr_code_settings_controller_api.py index d464f96e..05ad56da 100644 --- a/paas/tb_paas_client/api/qr_code_settings_controller_api.py +++ b/paas/tb_paas_client/api/qr_code_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/queue_controller_api.py b/paas/tb_paas_client/api/queue_controller_api.py index d1322426..cb49bde1 100644 --- a/paas/tb_paas_client/api/queue_controller_api.py +++ b/paas/tb_paas_client/api/queue_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/queue_stats_controller_api.py b/paas/tb_paas_client/api/queue_stats_controller_api.py index fbc2bf19..273114fa 100644 --- a/paas/tb_paas_client/api/queue_stats_controller_api.py +++ b/paas/tb_paas_client/api/queue_stats_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/report_controller_api.py b/paas/tb_paas_client/api/report_controller_api.py index ff2b8ff4..9d4e8c9e 100644 --- a/paas/tb_paas_client/api/report_controller_api.py +++ b/paas/tb_paas_client/api/report_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/report_template_controller_api.py b/paas/tb_paas_client/api/report_template_controller_api.py index 29975b8d..8c750523 100644 --- a/paas/tb_paas_client/api/report_template_controller_api.py +++ b/paas/tb_paas_client/api/report_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/role_controller_api.py b/paas/tb_paas_client/api/role_controller_api.py index 95c0fbc9..8add49fc 100644 --- a/paas/tb_paas_client/api/role_controller_api.py +++ b/paas/tb_paas_client/api/role_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/rpc_v1_controller_api.py b/paas/tb_paas_client/api/rpc_v1_controller_api.py index 7200ce07..b11c1d60 100644 --- a/paas/tb_paas_client/api/rpc_v1_controller_api.py +++ b/paas/tb_paas_client/api/rpc_v1_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/rpc_v2_controller_api.py b/paas/tb_paas_client/api/rpc_v2_controller_api.py index 76f2a1b7..798b4c7e 100644 --- a/paas/tb_paas_client/api/rpc_v2_controller_api.py +++ b/paas/tb_paas_client/api/rpc_v2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/rule_chain_controller_api.py b/paas/tb_paas_client/api/rule_chain_controller_api.py index 8a28716f..865af436 100644 --- a/paas/tb_paas_client/api/rule_chain_controller_api.py +++ b/paas/tb_paas_client/api/rule_chain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/rule_engine_controller_api.py b/paas/tb_paas_client/api/rule_engine_controller_api.py index ffdee21f..6837b542 100644 --- a/paas/tb_paas_client/api/rule_engine_controller_api.py +++ b/paas/tb_paas_client/api/rule_engine_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/scheduler_event_controller_api.py b/paas/tb_paas_client/api/scheduler_event_controller_api.py index 5fbcabf6..3510520d 100644 --- a/paas/tb_paas_client/api/scheduler_event_controller_api.py +++ b/paas/tb_paas_client/api/scheduler_event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/secret_controller_api.py b/paas/tb_paas_client/api/secret_controller_api.py index d694b077..a03f4d91 100644 --- a/paas/tb_paas_client/api/secret_controller_api.py +++ b/paas/tb_paas_client/api/secret_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/self_registration_controller_api.py b/paas/tb_paas_client/api/self_registration_controller_api.py index 220a60e5..4b4ddaa7 100644 --- a/paas/tb_paas_client/api/self_registration_controller_api.py +++ b/paas/tb_paas_client/api/self_registration_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/sign_up_controller_api.py b/paas/tb_paas_client/api/sign_up_controller_api.py index 26f5d572..5ed4ae2e 100644 --- a/paas/tb_paas_client/api/sign_up_controller_api.py +++ b/paas/tb_paas_client/api/sign_up_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/solution_controller_api.py b/paas/tb_paas_client/api/solution_controller_api.py deleted file mode 100644 index 26e129df..00000000 --- a/paas/tb_paas_client/api/solution_controller_api.py +++ /dev/null @@ -1,1427 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -""" - ThingsBoard REST API - - ThingsBoard Professional Edition IoT platform REST API documentation. - - The version of the OpenAPI document: 4.3.1.2.0PAAS - Contact: info@thingsboard.io - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -import warnings -from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt -from typing import Any, Dict, List, Optional, Tuple, Union -from typing_extensions import Annotated - -from pydantic import Field, StrictStr -from typing import List -from typing_extensions import Annotated -from tb_paas_client.models.solution_install_response import SolutionInstallResponse -from tb_paas_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails -from tb_paas_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo -from tb_paas_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions - -from tb_paas_client.api_client import ApiClient, RequestSerialized -from tb_paas_client.api_response import ApiResponse -from tb_paas_client.rest import RESTResponseType - - -class SolutionControllerApi: - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None) -> None: - if api_client is None: - api_client = ApiClient.get_default() - self.api_client = api_client - - - @validate_call - def get_solution_template_details( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> TenantSolutionTemplateDetails: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_details_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[TenantSolutionTemplateDetails]: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_details_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_details_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/details/{solutionTemplateId}', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def get_solution_template_infos( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> List[TenantSolutionTemplateInfo]: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_infos_with_http_info( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[List[TenantSolutionTemplateInfo]]: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_infos_without_preload_content( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_infos_serialize( - self, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/infos', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def get_solution_template_instructions( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> TenantSolutionTemplateInstructions: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_instructions_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[TenantSolutionTemplateInstructions]: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_instructions_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_instructions_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/instructions/{solutionTemplateId}', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def install_solution_template( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> SolutionInstallResponse: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def install_solution_template_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[SolutionInstallResponse]: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def install_solution_template_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _install_solution_template_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='POST', - resource_path='/api/solutions/templates/{solutionTemplateId}/install', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def uninstall_solution_template( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def uninstall_solution_template_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def uninstall_solution_template_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _uninstall_solution_template_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='DELETE', - resource_path='/api/solutions/templates/{solutionTemplateId}/delete', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - diff --git a/paas/tb_paas_client/api/solution_export_import_controller_api.py b/paas/tb_paas_client/api/solution_export_import_controller_api.py index 014bcdb3..16f6dffb 100644 --- a/paas/tb_paas_client/api/solution_export_import_controller_api.py +++ b/paas/tb_paas_client/api/solution_export_import_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/subscription_controller_api.py b/paas/tb_paas_client/api/subscription_controller_api.py index 9e5e28d4..d3c7feff 100644 --- a/paas/tb_paas_client/api/subscription_controller_api.py +++ b/paas/tb_paas_client/api/subscription_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/tb_resource_controller_api.py b/paas/tb_paas_client/api/tb_resource_controller_api.py index 050d0479..282929c0 100644 --- a/paas/tb_paas_client/api/tb_resource_controller_api.py +++ b/paas/tb_paas_client/api/tb_resource_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/telemetry_controller_api.py b/paas/tb_paas_client/api/telemetry_controller_api.py index 4d49a096..80ba0221 100644 --- a/paas/tb_paas_client/api/telemetry_controller_api.py +++ b/paas/tb_paas_client/api/telemetry_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/tenant_controller_api.py b/paas/tb_paas_client/api/tenant_controller_api.py index 93518f5f..58872854 100644 --- a/paas/tb_paas_client/api/tenant_controller_api.py +++ b/paas/tb_paas_client/api/tenant_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/tenant_profile_controller_api.py b/paas/tb_paas_client/api/tenant_profile_controller_api.py index 922d65a7..813d4846 100644 --- a/paas/tb_paas_client/api/tenant_profile_controller_api.py +++ b/paas/tb_paas_client/api/tenant_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/translation_controller_api.py b/paas/tb_paas_client/api/translation_controller_api.py index b3812ace..ab379918 100644 --- a/paas/tb_paas_client/api/translation_controller_api.py +++ b/paas/tb_paas_client/api/translation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/trendz_api_controller_api.py b/paas/tb_paas_client/api/trendz_api_controller_api.py index a235a848..e2f4e6ca 100644 --- a/paas/tb_paas_client/api/trendz_api_controller_api.py +++ b/paas/tb_paas_client/api/trendz_api_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/trendz_controller_api.py b/paas/tb_paas_client/api/trendz_controller_api.py index 28c8dafc..af9ed041 100644 --- a/paas/tb_paas_client/api/trendz_controller_api.py +++ b/paas/tb_paas_client/api/trendz_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/two_factor_auth_config_controller_api.py b/paas/tb_paas_client/api/two_factor_auth_config_controller_api.py index b75581b1..0b47dc17 100644 --- a/paas/tb_paas_client/api/two_factor_auth_config_controller_api.py +++ b/paas/tb_paas_client/api/two_factor_auth_config_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/two_factor_auth_controller_api.py b/paas/tb_paas_client/api/two_factor_auth_controller_api.py index cf15d83c..84be1376 100644 --- a/paas/tb_paas_client/api/two_factor_auth_controller_api.py +++ b/paas/tb_paas_client/api/two_factor_auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/ui_settings_controller_api.py b/paas/tb_paas_client/api/ui_settings_controller_api.py index 9a96de44..1dd7d80b 100644 --- a/paas/tb_paas_client/api/ui_settings_controller_api.py +++ b/paas/tb_paas_client/api/ui_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/usage_info_controller_api.py b/paas/tb_paas_client/api/usage_info_controller_api.py index ea240d84..227c7405 100644 --- a/paas/tb_paas_client/api/usage_info_controller_api.py +++ b/paas/tb_paas_client/api/usage_info_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/user_controller_api.py b/paas/tb_paas_client/api/user_controller_api.py index 46205056..09126e16 100644 --- a/paas/tb_paas_client/api/user_controller_api.py +++ b/paas/tb_paas_client/api/user_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/user_permissions_controller_api.py b/paas/tb_paas_client/api/user_permissions_controller_api.py index 13839cac..5aa95528 100644 --- a/paas/tb_paas_client/api/user_permissions_controller_api.py +++ b/paas/tb_paas_client/api/user_permissions_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/white_labeling_controller_api.py b/paas/tb_paas_client/api/white_labeling_controller_api.py index 917c8e5a..39a889ed 100644 --- a/paas/tb_paas_client/api/white_labeling_controller_api.py +++ b/paas/tb_paas_client/api/white_labeling_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/widget_type_controller_api.py b/paas/tb_paas_client/api/widget_type_controller_api.py index e3fbcb1a..1e69c902 100644 --- a/paas/tb_paas_client/api/widget_type_controller_api.py +++ b/paas/tb_paas_client/api/widget_type_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api/widgets_bundle_controller_api.py b/paas/tb_paas_client/api/widgets_bundle_controller_api.py index 98c7a5a2..e8e39a89 100644 --- a/paas/tb_paas_client/api/widgets_bundle_controller_api.py +++ b/paas/tb_paas_client/api/widgets_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/api_client.py b/paas/tb_paas_client/api_client.py index dfd59dce..3ae9e506 100644 --- a/paas/tb_paas_client/api_client.py +++ b/paas/tb_paas_client/api_client.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/client.pyi b/paas/tb_paas_client/client.pyi index 5d3dbfc7..96c54d17 100644 --- a/paas/tb_paas_client/client.pyi +++ b/paas/tb_paas_client/client.pyi @@ -91,7 +91,6 @@ from tb_paas_client.api.scheduler_event_controller_api import SchedulerEventCont from tb_paas_client.api.secret_controller_api import SecretControllerApi from tb_paas_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_paas_client.api.sign_up_controller_api import SignUpControllerApi -from tb_paas_client.api.solution_controller_api import SolutionControllerApi from tb_paas_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_paas_client.api.subscription_controller_api import SubscriptionControllerApi from tb_paas_client.api.tb_resource_controller_api import TbResourceControllerApi @@ -1917,6 +1916,10 @@ class ThingsboardClient: def delete_integration_with_http_info(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[None]: ... def delete_integration_without_preload_content(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... def _delete_integration_serialize(self, integration_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def export_integration_package(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> bytearray: ... + def export_integration_package_with_http_info(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[bytearray]: ... + def export_integration_package_without_preload_content(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... + def _export_integration_package_serialize(self, integration_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def find_all_related_edges_missing_attributes(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> str: ... def find_all_related_edges_missing_attributes_with_http_info(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[str]: ... def find_all_related_edges_missing_attributes_without_preload_content(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... @@ -2842,30 +2845,6 @@ class ThingsboardClient: def terms_of_use_accepted_without_preload_content(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... def _terms_of_use_accepted_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - # --- SolutionControllerApi --- - @property - def solution_controller(self) -> SolutionControllerApi: ... - def get_solution_template_details(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> TenantSolutionTemplateDetails: ... - def get_solution_template_details_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[TenantSolutionTemplateDetails]: ... - def get_solution_template_details_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_details_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_solution_template_infos(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> List[TenantSolutionTemplateInfo]: ... - def get_solution_template_infos_with_http_info(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[List[TenantSolutionTemplateInfo]]: ... - def get_solution_template_infos_without_preload_content(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_infos_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_solution_template_instructions(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> TenantSolutionTemplateInstructions: ... - def get_solution_template_instructions_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[TenantSolutionTemplateInstructions]: ... - def get_solution_template_instructions_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_instructions_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def install_solution_template(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> SolutionInstallResponse: ... - def install_solution_template_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[SolutionInstallResponse]: ... - def install_solution_template_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _install_solution_template_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def uninstall_solution_template(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> None: ... - def uninstall_solution_template_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[None]: ... - def uninstall_solution_template_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _uninstall_solution_template_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - # --- SolutionExportImportControllerApi --- @property def solution_export_import_controller(self) -> SolutionExportImportControllerApi: ... diff --git a/paas/tb_paas_client/configuration.py b/paas/tb_paas_client/configuration.py index 17a4c62e..3f2bd9a6 100644 --- a/paas/tb_paas_client/configuration.py +++ b/paas/tb_paas_client/configuration.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -549,7 +549,7 @@ def to_debug_report(self) -> str: return "Python SDK Debug Report:\n"\ "OS: {env}\n"\ "Python Version: {pyversion}\n"\ - "Version of the API: 4.3.1.2.0PAAS\n"\ + "Version of the API: 4.3.1.3.0PAAS\n"\ "SDK Package Version: 1.0.0".\ format(env=sys.platform, pyversion=sys.version) diff --git a/paas/tb_paas_client/exceptions.py b/paas/tb_paas_client/exceptions.py index 6a2dc84d..59a69521 100644 --- a/paas/tb_paas_client/exceptions.py +++ b/paas/tb_paas_client/exceptions.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2.0PAAS + The version of the OpenAPI document: 4.3.1.3.0PAAS Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/paas/tb_paas_client/models/__init__.py b/paas/tb_paas_client/models/__init__.py index 8f0656bc..ff193218 100644 --- a/paas/tb_paas_client/models/__init__.py +++ b/paas/tb_paas_client/models/__init__.py @@ -813,9 +813,7 @@ "SolutionExportRequest", "SolutionExportResponse", "SolutionImportResult", - "SolutionInstallResponse", "SolutionStep", - "SolutionTemplateLevel", "SolutionValidationResult", "SpecificTimeSchedule", "SplitViewComponent", @@ -876,9 +874,6 @@ "TenantProfileData", "TenantProfileId", "TenantProfileQueueConfiguration", - "TenantSolutionTemplateDetails", - "TenantSolutionTemplateInfo", - "TenantSolutionTemplateInstructions", "TestSmsRequest", "TextAlignment", "ThingsboardCredentialsExpiredResponse", @@ -1783,9 +1778,7 @@ from tb_paas_client.models.solution_export_request import SolutionExportRequest from tb_paas_client.models.solution_export_response import SolutionExportResponse from tb_paas_client.models.solution_import_result import SolutionImportResult - from tb_paas_client.models.solution_install_response import SolutionInstallResponse from tb_paas_client.models.solution_step import SolutionStep - from tb_paas_client.models.solution_template_level import SolutionTemplateLevel from tb_paas_client.models.solution_validation_result import SolutionValidationResult from tb_paas_client.models.specific_time_schedule import SpecificTimeSchedule from tb_paas_client.models.split_view_component import SplitViewComponent @@ -1846,9 +1839,6 @@ from tb_paas_client.models.tenant_profile_data import TenantProfileData from tb_paas_client.models.tenant_profile_id import TenantProfileId from tb_paas_client.models.tenant_profile_queue_configuration import TenantProfileQueueConfiguration - from tb_paas_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails - from tb_paas_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo - from tb_paas_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions from tb_paas_client.models.test_sms_request import TestSmsRequest from tb_paas_client.models.text_alignment import TextAlignment from tb_paas_client.models.thingsboard_credentials_expired_response import ThingsboardCredentialsExpiredResponse @@ -2752,9 +2742,7 @@ "SolutionExportRequest": "tb_paas_client.models.solution_export_request", "SolutionExportResponse": "tb_paas_client.models.solution_export_response", "SolutionImportResult": "tb_paas_client.models.solution_import_result", - "SolutionInstallResponse": "tb_paas_client.models.solution_install_response", "SolutionStep": "tb_paas_client.models.solution_step", - "SolutionTemplateLevel": "tb_paas_client.models.solution_template_level", "SolutionValidationResult": "tb_paas_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_paas_client.models.specific_time_schedule", "SplitViewComponent": "tb_paas_client.models.split_view_component", @@ -2815,9 +2803,6 @@ "TenantProfileData": "tb_paas_client.models.tenant_profile_data", "TenantProfileId": "tb_paas_client.models.tenant_profile_id", "TenantProfileQueueConfiguration": "tb_paas_client.models.tenant_profile_queue_configuration", - "TenantSolutionTemplateDetails": "tb_paas_client.models.tenant_solution_template_details", - "TenantSolutionTemplateInfo": "tb_paas_client.models.tenant_solution_template_info", - "TenantSolutionTemplateInstructions": "tb_paas_client.models.tenant_solution_template_instructions", "TestSmsRequest": "tb_paas_client.models.test_sms_request", "TextAlignment": "tb_paas_client.models.text_alignment", "ThingsboardCredentialsExpiredResponse": "tb_paas_client.models.thingsboard_credentials_expired_response", diff --git a/paas/tb_paas_client/models/solution_install_response.py b/paas/tb_paas_client/models/solution_install_response.py deleted file mode 100644 index dce8eb30..00000000 --- a/paas/tb_paas_client/models/solution_install_response.py +++ /dev/null @@ -1,118 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.customer_id import CustomerId -from tb_paas_client.models.dashboard_id import DashboardId -from tb_paas_client.models.entity_group_id import EntityGroupId -from typing import Optional, Set -from typing_extensions import Self - -class SolutionInstallResponse(BaseModel): - """ - SolutionInstallResponse - """ # noqa: E501 - dashboard_group_id: Optional[EntityGroupId] = Field(default=None, description="Id of the group that contains main dashboard of the solution", serialization_alias="dashboardGroupId") - dashboard_id: Optional[DashboardId] = Field(default=None, description="Id of the main dashboard of the solution", serialization_alias="dashboardId") - public_id: Optional[CustomerId] = Field(default=None, description="Id of the public customer if solution has public entities", serialization_alias="publicId") - main_dashboard_public: Optional[StrictBool] = Field(default=None, description="Is the main dashboard public", serialization_alias="mainDashboardPublic") - details: Optional[StrictStr] = Field(default=None, description="Markdown with solution usage instructions") - success: Optional[StrictBool] = Field(default=None, description="Indicates that template was installed successfully") - __properties: ClassVar[List[str]] = ["dashboardGroupId", "dashboardId", "publicId", "mainDashboardPublic", "details", "success"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_group_id - if self.dashboard_group_id: - _dict['dashboardGroupId'] = self.dashboard_group_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of dashboard_id - if self.dashboard_id: - _dict['dashboardId'] = self.dashboard_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of public_id - if self.public_id: - _dict['publicId'] = self.public_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboard_group_id": EntityGroupId.from_dict(obj["dashboardGroupId"]) if obj.get("dashboardGroupId") is not None else None, - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None, - "public_id": CustomerId.from_dict(obj["publicId"]) if obj.get("publicId") is not None else None, - "main_dashboard_public": obj.get("mainDashboardPublic"), - "details": obj.get("details"), - "success": obj.get("success") - }) - return _obj - - diff --git a/paas/tb_paas_client/models/solution_template_level.py b/paas/tb_paas_client/models/solution_template_level.py deleted file mode 100644 index a1b1e73b..00000000 --- a/paas/tb_paas_client/models/solution_template_level.py +++ /dev/null @@ -1,42 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class SolutionTemplateLevel(str, Enum): - """ - SolutionTemplateLevel - """ - - """ - allowed enum values - """ - MAKER = 'MAKER' - PROTOTYPE = 'PROTOTYPE' - STARTUP = 'STARTUP' - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of SolutionTemplateLevel from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/paas/tb_paas_client/models/subscription_exception_error_code.py b/paas/tb_paas_client/models/subscription_exception_error_code.py index 5fa23f9b..4d6e0683 100644 --- a/paas/tb_paas_client/models/subscription_exception_error_code.py +++ b/paas/tb_paas_client/models/subscription_exception_error_code.py @@ -36,7 +36,6 @@ class SubscriptionExceptionErrorCode(int, Enum): NUMBER_4 = 4 NUMBER_5 = 5 NUMBER_6 = 6 - NUMBER_7 = 7 @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/paas/tb_paas_client/models/tenant_solution_template_details.py b/paas/tb_paas_client/models/tenant_solution_template_details.py deleted file mode 100644 index 88b2da21..00000000 --- a/paas/tb_paas_client/models/tenant_solution_template_details.py +++ /dev/null @@ -1,115 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.solution_template_level import SolutionTemplateLevel -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateDetails(BaseModel): - """ - TenantSolutionTemplateDetails - """ # noqa: E501 - id: Optional[StrictStr] = Field(default=None, description="ID of the solution template") - title: Optional[StrictStr] = Field(default=None, description="Template Title") - level: Optional[SolutionTemplateLevel] = Field(default=None, description="Level of the subscription that is required to unlock the template") - install_timeout_ms: Optional[StrictInt] = Field(default=None, description="Timeout for the installation UI to wait while template is installing", serialization_alias="installTimeoutMs") - tenant_telemetry_keys: Optional[List[StrictStr]] = Field(default=None, description="What keys to delete during template uninstall", serialization_alias="tenantTelemetryKeys") - tenant_attribute_keys: Optional[List[StrictStr]] = Field(default=None, description="What attributes to delete during template uninstall", serialization_alias="tenantAttributeKeys") - image_urls: Optional[List[StrictStr]] = Field(default=None, serialization_alias="imageUrls") - highlights: Optional[StrictStr] = None - description: Optional[StrictStr] = None - installed: Optional[StrictBool] = None - __properties: ClassVar[List[str]] = ["id", "title", "level", "installTimeoutMs", "tenantTelemetryKeys", "tenantAttributeKeys", "imageUrls", "highlights", "description", "installed"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "level": obj.get("level"), - "install_timeout_ms": obj.get("installTimeoutMs"), - "tenant_telemetry_keys": obj.get("tenantTelemetryKeys"), - "tenant_attribute_keys": obj.get("tenantAttributeKeys"), - "image_urls": obj.get("imageUrls"), - "highlights": obj.get("highlights"), - "description": obj.get("description"), - "installed": obj.get("installed") - }) - return _obj - - diff --git a/paas/tb_paas_client/models/tenant_solution_template_info.py b/paas/tb_paas_client/models/tenant_solution_template_info.py deleted file mode 100644 index de96d9ba..00000000 --- a/paas/tb_paas_client/models/tenant_solution_template_info.py +++ /dev/null @@ -1,117 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.solution_template_level import SolutionTemplateLevel -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateInfo(BaseModel): - """ - TenantSolutionTemplateInfo - """ # noqa: E501 - id: Optional[StrictStr] = Field(default=None, description="ID of the solution template") - title: Optional[StrictStr] = Field(default=None, description="Template Title") - level: Optional[SolutionTemplateLevel] = Field(default=None, description="Level of the subscription that is required to unlock the template") - install_timeout_ms: Optional[StrictInt] = Field(default=None, description="Timeout for the installation UI to wait while template is installing", serialization_alias="installTimeoutMs") - tenant_telemetry_keys: Optional[List[StrictStr]] = Field(default=None, description="What keys to delete during template uninstall", serialization_alias="tenantTelemetryKeys") - tenant_attribute_keys: Optional[List[StrictStr]] = Field(default=None, description="What attributes to delete during template uninstall", serialization_alias="tenantAttributeKeys") - preview_image_url: Optional[StrictStr] = Field(default=None, description="URL of the preview image", serialization_alias="previewImageUrl") - video_preview_image_url: Optional[StrictStr] = Field(default=None, description="Video preview image URL", serialization_alias="videoPreviewImageUrl") - preview_mp4_url: Optional[StrictStr] = Field(default=None, description="Video MP4 URL", serialization_alias="previewMp4Url") - preview_webm_url: Optional[StrictStr] = Field(default=None, description="Video WEBM URL", serialization_alias="previewWebmUrl") - installed: Optional[StrictBool] = Field(default=None, description="Indicates that template is already installed for the current tenant") - __properties: ClassVar[List[str]] = ["id", "title", "level", "installTimeoutMs", "tenantTelemetryKeys", "tenantAttributeKeys", "previewImageUrl", "videoPreviewImageUrl", "previewMp4Url", "previewWebmUrl", "installed"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "level": obj.get("level"), - "install_timeout_ms": obj.get("installTimeoutMs"), - "tenant_telemetry_keys": obj.get("tenantTelemetryKeys"), - "tenant_attribute_keys": obj.get("tenantAttributeKeys"), - "preview_image_url": obj.get("previewImageUrl"), - "video_preview_image_url": obj.get("videoPreviewImageUrl"), - "preview_mp4_url": obj.get("previewMp4Url"), - "preview_webm_url": obj.get("previewWebmUrl"), - "installed": obj.get("installed") - }) - return _obj - - diff --git a/paas/tb_paas_client/models/tenant_solution_template_instructions.py b/paas/tb_paas_client/models/tenant_solution_template_instructions.py deleted file mode 100644 index 15f0e8c9..00000000 --- a/paas/tb_paas_client/models/tenant_solution_template_instructions.py +++ /dev/null @@ -1,116 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_paas_client.models.customer_id import CustomerId -from tb_paas_client.models.dashboard_id import DashboardId -from tb_paas_client.models.entity_group_id import EntityGroupId -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateInstructions(BaseModel): - """ - TenantSolutionTemplateInstructions - """ # noqa: E501 - dashboard_group_id: Optional[EntityGroupId] = Field(default=None, description="Id of the group that contains main dashboard of the solution", serialization_alias="dashboardGroupId") - dashboard_id: Optional[DashboardId] = Field(default=None, description="Id of the main dashboard of the solution", serialization_alias="dashboardId") - public_id: Optional[CustomerId] = Field(default=None, description="Id of the public customer if solution has public entities", serialization_alias="publicId") - main_dashboard_public: Optional[StrictBool] = Field(default=None, description="Is the main dashboard public", serialization_alias="mainDashboardPublic") - details: Optional[StrictStr] = Field(default=None, description="Markdown with solution usage instructions") - __properties: ClassVar[List[str]] = ["dashboardGroupId", "dashboardId", "publicId", "mainDashboardPublic", "details"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_group_id - if self.dashboard_group_id: - _dict['dashboardGroupId'] = self.dashboard_group_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of dashboard_id - if self.dashboard_id: - _dict['dashboardId'] = self.dashboard_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of public_id - if self.public_id: - _dict['publicId'] = self.public_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboard_group_id": EntityGroupId.from_dict(obj["dashboardGroupId"]) if obj.get("dashboardGroupId") is not None else None, - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None, - "public_id": CustomerId.from_dict(obj["publicId"]) if obj.get("publicId") is not None else None, - "main_dashboard_public": obj.get("mainDashboardPublic"), - "details": obj.get("details") - }) - return _obj - - diff --git a/pe/docs/IntegrationControllerApi.md b/pe/docs/IntegrationControllerApi.md index 446fd3d8..0e0c875a 100644 --- a/pe/docs/IntegrationControllerApi.md +++ b/pe/docs/IntegrationControllerApi.md @@ -6,6 +6,7 @@ Integration client.assign_integration_to_edge(edge_id: str, integration_id: str) # Assign integration to edge (assignIntegrationToEdge) None client.check_integration_connection(integration: Integration) # Check integration connectivity (checkIntegrationConnection) None client.delete_integration(integration_id: str) # Delete integration (deleteIntegration) +bytearray client.export_integration_package(integration_id: str) # Export integration as IoT Hub package str client.find_all_related_edges_missing_attributes(integration_id: str) # Find missing attributes for all related edges (findAllRelatedEdgesMissingAttributes) str client.find_edge_missing_attributes(edge_id: str, integration_ids: List[str]) # Find edge missing attributes for assigned integrations (findEdgeMissingAttributes) PageDataIntegrationInfo client.get_edge_integration_infos(edge_id: str, page_size: int, page: int, text_search: Optional[str] = None, sort_property: Optional[str] = None, sort_order: Optional[str] = None) # Get Edge Integrations (getEdgeIntegrationInfos) @@ -94,6 +95,30 @@ Deletes the integration and all the relations (from and to the integration). Ref None (empty response body) +## export_integration_package + +```python +bytearray client.export_integration_package(integration_id: str) +``` + +**GET** `/api/integration/{integrationId}/export-package` + +Export integration as IoT Hub package + +Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **integration_id** | **str** | | | + +### Return type + +**bytearray** + + ## find_all_related_edges_missing_attributes ```python diff --git a/pe/docs/SolutionControllerApi.md b/pe/docs/SolutionControllerApi.md deleted file mode 100644 index 3d30053c..00000000 --- a/pe/docs/SolutionControllerApi.md +++ /dev/null @@ -1,125 +0,0 @@ -# SolutionControllerApi - -`ThingsboardClient` methods: - -```python -TenantSolutionTemplateDetails client.get_solution_template_details(solution_template_id: str) # Get Solution template details (getSolutionTemplateDetails) -List[TenantSolutionTemplateInfo] client.get_solution_template_infos() # Get Solution templates (getSolutionTemplateInfos) -TenantSolutionTemplateInstructions client.get_solution_template_instructions(solution_template_id: str) # Get Solution Template Instructions (getSolutionTemplateInstructions) -SolutionInstallResponse client.install_solution_template(solution_template_id: str) # Install Solution Template (installSolutionTemplate) -None client.uninstall_solution_template(solution_template_id: str) # Uninstall Solution Template (uninstallSolutionTemplate) -``` - - -## get_solution_template_details - -```python -TenantSolutionTemplateDetails client.get_solution_template_details(solution_template_id: str) -``` - -**GET** `/api/solutions/templates/details/{solutionTemplateId}` - -Get Solution template details (getSolutionTemplateDetails) - -Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**TenantSolutionTemplateDetails** - - -## get_solution_template_infos - -```python -List[TenantSolutionTemplateInfo] client.get_solution_template_infos() -``` - -**GET** `/api/solutions/templates/infos` - -Get Solution templates (getSolutionTemplateInfos) - -Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - -### Return type - -**List[TenantSolutionTemplateInfo]** - - -## get_solution_template_instructions - -```python -TenantSolutionTemplateInstructions client.get_solution_template_instructions(solution_template_id: str) -``` - -**GET** `/api/solutions/templates/instructions/{solutionTemplateId}` - -Get Solution Template Instructions (getSolutionTemplateInstructions) - -Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**TenantSolutionTemplateInstructions** - - -## install_solution_template - -```python -SolutionInstallResponse client.install_solution_template(solution_template_id: str) -``` - -**POST** `/api/solutions/templates/{solutionTemplateId}/install` - -Install Solution Template (installSolutionTemplate) - -Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -**SolutionInstallResponse** - - -## uninstall_solution_template - -```python -None client.uninstall_solution_template(solution_template_id: str) -``` - -**DELETE** `/api/solutions/templates/{solutionTemplateId}/delete` - -Uninstall Solution Template (uninstallSolutionTemplate) - -Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - -### Parameters - -| Name | Type | Description | Notes | -|------------- | ------------- | ------------- | -------------| -| **solution_template_id** | **str** | A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' | | - -### Return type - -None (empty response body) - diff --git a/pe/docs/SolutionInstallResponse.md b/pe/docs/SolutionInstallResponse.md deleted file mode 100644 index 1281c4a2..00000000 --- a/pe/docs/SolutionInstallResponse.md +++ /dev/null @@ -1,35 +0,0 @@ - -# SolutionInstallResponse - -`tb_pe_client.models.SolutionInstallResponse` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **dashboard_group_id** | [**EntityGroupId**](EntityGroupId.md) | Id of the group that contains main dashboard of the solution | [optional] | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | Id of the main dashboard of the solution | [optional] | -| **public_id** | [**CustomerId**](CustomerId.md) | Id of the public customer if solution has public entities | [optional] | -| **main_dashboard_public** | **bool** | Is the main dashboard public | [optional] | -| **details** | **str** | Markdown with solution usage instructions | [optional] | -| **success** | **bool** | Indicates that template was installed successfully | [optional] | - - - -## Referenced Types - -> **EntityId types** (`AdminSettingsId`, `AiModelId`, `AlarmId`, `ApiKeyId`, `ApiUsageStateId`, `AssetId`, `AssetProfileId`, `BlobEntityId`, `CalculatedFieldId`, `ConverterId`, `CustomerId`, `DashboardId`, `DeviceId`, `DeviceProfileId`, `DomainId`, `EdgeId`, `EntityGroupId`, `EntityViewId`, `GroupPermissionId`, `IntegrationId`, `JobId`, `MobileAppBundleId`, `MobileAppId`, `NotificationId`, `NotificationRequestId`, `NotificationRuleId`, `NotificationTargetId`, `NotificationTemplateId`, `OAuth2ClientId`, `OtaPackageId`, `QueueId`, `QueueStatsId`, `ReportId`, `ReportTemplateId`, `RoleId`, `RpcId`, `RuleChainId`, `RuleNodeId`, `SchedulerEventId`, `SecretId`, `TbResourceId`, `TenantId`, `TenantProfileId`, `UserId`, `WidgetTypeId`, `WidgetsBundleId`, etc.): `{entity_type: EntityType, id: UUID}` — all EntityId subtypes share this structure. - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) - ---- - -### Conventions - -- **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.dashboard_group_id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `SolutionInstallResponse.model_validate(data)` or `SolutionInstallResponse.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/pe/docs/SolutionTemplateLevel.md b/pe/docs/SolutionTemplateLevel.md deleted file mode 100644 index 42405f26..00000000 --- a/pe/docs/SolutionTemplateLevel.md +++ /dev/null @@ -1,26 +0,0 @@ - -# SolutionTemplateLevel - -`tb_pe_client.models.SolutionTemplateLevel` - -## Enum Values - - -* `MAKER` (value: `'MAKER'`) - -* `PROTOTYPE` (value: `'PROTOTYPE'`) - -* `STARTUP` (value: `'STARTUP'`) - - - ---- - -### Conventions - -- **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `SolutionTemplateLevel.model_validate(data)` or `SolutionTemplateLevel.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/pe/docs/TenantSolutionTemplateDetails.md b/pe/docs/TenantSolutionTemplateDetails.md deleted file mode 100644 index c2dd0b08..00000000 --- a/pe/docs/TenantSolutionTemplateDetails.md +++ /dev/null @@ -1,37 +0,0 @@ - -# TenantSolutionTemplateDetails - -`tb_pe_client.models.TenantSolutionTemplateDetails` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **id** | **str** | ID of the solution template | [optional] | -| **title** | **str** | Template Title | [optional] | -| **level** | [**SolutionTemplateLevel**](SolutionTemplateLevel.md) | Level of the subscription that is required to unlock the template | [optional] | -| **install_timeout_ms** | **int** | Timeout for the installation UI to wait while template is installing | [optional] | -| **tenant_telemetry_keys** | **List[str]** | What keys to delete during template uninstall | [optional] | -| **tenant_attribute_keys** | **List[str]** | What attributes to delete during template uninstall | [optional] | -| **image_urls** | **List[str]** | | [optional] | -| **highlights** | **str** | | [optional] | -| **description** | **str** | | [optional] | -| **installed** | **bool** | | [optional] | - - - -## Referenced Types - -#### SolutionTemplateLevel (enum) -`MAKER` | `PROTOTYPE` | `STARTUP` - ---- - -### Conventions - -- **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateDetails.model_validate(data)` or `TenantSolutionTemplateDetails.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/pe/docs/TenantSolutionTemplateInfo.md b/pe/docs/TenantSolutionTemplateInfo.md deleted file mode 100644 index c37e4110..00000000 --- a/pe/docs/TenantSolutionTemplateInfo.md +++ /dev/null @@ -1,38 +0,0 @@ - -# TenantSolutionTemplateInfo - -`tb_pe_client.models.TenantSolutionTemplateInfo` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **id** | **str** | ID of the solution template | [optional] | -| **title** | **str** | Template Title | [optional] | -| **level** | [**SolutionTemplateLevel**](SolutionTemplateLevel.md) | Level of the subscription that is required to unlock the template | [optional] | -| **install_timeout_ms** | **int** | Timeout for the installation UI to wait while template is installing | [optional] | -| **tenant_telemetry_keys** | **List[str]** | What keys to delete during template uninstall | [optional] | -| **tenant_attribute_keys** | **List[str]** | What attributes to delete during template uninstall | [optional] | -| **preview_image_url** | **str** | URL of the preview image | [optional] | -| **video_preview_image_url** | **str** | Video preview image URL | [optional] | -| **preview_mp4_url** | **str** | Video MP4 URL | [optional] | -| **preview_webm_url** | **str** | Video WEBM URL | [optional] | -| **installed** | **bool** | Indicates that template is already installed for the current tenant | [optional] | - - - -## Referenced Types - -#### SolutionTemplateLevel (enum) -`MAKER` | `PROTOTYPE` | `STARTUP` - ---- - -### Conventions - -- **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateInfo.model_validate(data)` or `TenantSolutionTemplateInfo.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/pe/docs/TenantSolutionTemplateInstructions.md b/pe/docs/TenantSolutionTemplateInstructions.md deleted file mode 100644 index a6cb1c55..00000000 --- a/pe/docs/TenantSolutionTemplateInstructions.md +++ /dev/null @@ -1,34 +0,0 @@ - -# TenantSolutionTemplateInstructions - -`tb_pe_client.models.TenantSolutionTemplateInstructions` - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -| **dashboard_group_id** | [**EntityGroupId**](EntityGroupId.md) | Id of the group that contains main dashboard of the solution | [optional] | -| **dashboard_id** | [**DashboardId**](DashboardId.md) | Id of the main dashboard of the solution | [optional] | -| **public_id** | [**CustomerId**](CustomerId.md) | Id of the public customer if solution has public entities | [optional] | -| **main_dashboard_public** | **bool** | Is the main dashboard public | [optional] | -| **details** | **str** | Markdown with solution usage instructions | [optional] | - - - -## Referenced Types - -> **EntityId types** (`AdminSettingsId`, `AiModelId`, `AlarmId`, `ApiKeyId`, `ApiUsageStateId`, `AssetId`, `AssetProfileId`, `BlobEntityId`, `CalculatedFieldId`, `ConverterId`, `CustomerId`, `DashboardId`, `DeviceId`, `DeviceProfileId`, `DomainId`, `EdgeId`, `EntityGroupId`, `EntityViewId`, `GroupPermissionId`, `IntegrationId`, `JobId`, `MobileAppBundleId`, `MobileAppId`, `NotificationId`, `NotificationRequestId`, `NotificationRuleId`, `NotificationTargetId`, `NotificationTemplateId`, `OAuth2ClientId`, `OtaPackageId`, `QueueId`, `QueueStatsId`, `ReportId`, `ReportTemplateId`, `RoleId`, `RpcId`, `RuleChainId`, `RuleNodeId`, `SchedulerEventId`, `SecretId`, `TbResourceId`, `TenantId`, `TenantProfileId`, `UserId`, `WidgetTypeId`, `WidgetsBundleId`, etc.): `{entity_type: EntityType, id: UUID}` — all EntityId subtypes share this structure. - -#### EntityType (enum) -`TENANT` | `CUSTOMER` | `USER` | `DASHBOARD` | `ASSET` | `DEVICE` | `ALARM` | `ENTITY_GROUP` | `CONVERTER` | `INTEGRATION` | … (46 values total) - ---- - -### Conventions - -- **Package:** `tb_pe_client.models` -- **Attribute access:** `obj.dashboard_group_id`, `obj.name`, etc. -- **Serialize:** `obj.model_dump()` or `obj.model_dump(by_alias=True)` for camelCase JSON -- **Deserialize:** `TenantSolutionTemplateInstructions.model_validate(data)` or `TenantSolutionTemplateInstructions.model_validate_json(json_str)` -- **None fields:** Optional attributes default to `None`; accessing them never raises exceptions - diff --git a/pe/spec/openapi.json b/pe/spec/openapi.json index b6c513de..9c22deee 100644 --- a/pe/spec/openapi.json +++ b/pe/spec/openapi.json @@ -12,7 +12,7 @@ "name": "Apache License Version 2.0", "url": "https://github.com/thingsboard/thingsboard/blob/master/LICENSE" }, - "version": "4.3.1.2PE" + "version": "4.3.1.3PE" }, "servers": [ { @@ -293,10 +293,6 @@ "name": "sign-up-controller", "description": "Sign Up Controller" }, - { - "name": "solution-controller", - "description": "Solution Controller" - }, { "name": "solution-export-import-controller", "description": "Solution Export Import Controller" @@ -4417,6 +4413,11 @@ "schema": { "type": "string" } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } } }, "required": true @@ -4541,6 +4542,7 @@ } } }, + "deprecated": true, "security": [ { "HttpLoginForm": [] @@ -64992,86 +64994,22 @@ ] } }, - "/api/integrationInfos": { + "/api/integration/{integrationId}/export-package": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integration Infos (getIntegrationInfos)", - "description": "Returns a page of integration infos 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationInfos", + "summary": "Export integration as IoT Hub package", + "description": "Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO.", + "operationId": "exportIntegrationPackage", "parameters": [ { - "name": "isEdgeTemplate", - "in": "query", - "description": "Fetch edge template integrations", - "required": false, - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "integrationId", + "in": "path", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the integration 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", - "debugMode", - "allowCreateDevicesOrAssets", - "enabled", - "remote", - "routingKey", - "secret" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -65080,7 +65018,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegrationInfo" + "type": "string", + "format": "byte" } } } @@ -65201,14 +65140,14 @@ ] } }, - "/api/integrations": { + "/api/integrationInfos": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations (getIntegrations)", - "description": "Returns a page of integrations 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrations", + "summary": "Get Integration Infos (getIntegrationInfos)", + "description": "Returns a page of integration infos 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationInfos", "parameters": [ { "name": "isEdgeTemplate", @@ -65289,7 +65228,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataIntegration" + "$ref": "#/components/schemas/PageDataIntegrationInfo" } } } @@ -65410,24 +65349,95 @@ ] } }, - "/api/integrations/converters/info": { + "/api/integrations": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations Converters info (getIntegrationsConvertersInfo)", - "description": "Returns a JSON object containing information about existing tenant converters and converters available in library. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getIntegrationsConvertersInfo", + "summary": "Get Integrations (getIntegrations)", + "description": "Returns a page of integrations 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\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrations", + "parameters": [ + { + "name": "isEdgeTemplate", + "in": "query", + "description": "Fetch edge template integrations", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "string", + "minimum": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the integration 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", + "debugMode", + "allowCreateDevicesOrAssets", + "enabled", + "remote", + "routingKey", + "secret" + ] + } + }, + { + "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": "object", - "additionalProperties": { - "$ref": "#/components/schemas/IntegrationConvertersInfo" - } + "$ref": "#/components/schemas/PageDataIntegration" } } } @@ -65548,37 +65558,23 @@ ] } }, - "/api/integrations/list": { + "/api/integrations/converters/info": { "get": { "tags": [ "integration-controller" ], - "summary": "Get Integrations By Ids (getIntegrationsByIds)", - "description": "Requested integrations must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getIntegrationsByIds", - "parameters": [ - { - "name": "integrationIds", - "in": "query", - "description": "A list of integration ids, separated by comma ','", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - ], + "summary": "Get Integrations Converters info (getIntegrationsConvertersInfo)", + "description": "Returns a JSON object containing information about existing tenant converters and converters available in library. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getIntegrationsConvertersInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Integration" + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/IntegrationConvertersInfo" } } } @@ -65700,22 +65696,25 @@ ] } }, - "/api/job/{id}": { + "/api/integrations/list": { "get": { "tags": [ - "job-controller" + "integration-controller" ], - "summary": "Get job by id (getJobById)", - "description": "Fetches job info by id.\n\nExample of a RUNNING CF_REPROCESSING job response:\n```json\n{\n \"id\": {\n \"entityType\": \"JOB\",\n \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\"\n },\n \"createdTime\": 1747053196590,\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\"\n },\n \"type\": \"CF_REPROCESSING\",\n \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\",\n \"entityId\": {\n \"entityType\": \"DEVICE_PROFILE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"status\": \"RUNNING\",\n \"configuration\": {\n \"type\": \"CF_REPROCESSING\",\n \"calculatedFieldId\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\"\n },\n \"startTs\": 1747051995760,\n \"endTs\": 1747052895760,\n \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"toReprocess\": null\n },\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CF_REPROCESSING job with failures:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 0,\n \"failedCount\": 2,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 1\"\n }\n }\n },\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 2\"\n }\n }\n }\n ],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a FAILED job result with general error:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": null,\n \"results\": [],\n \"generalError\": \"Timeout to find devices by profile\",\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CANCELLED job result:\n```json\n{\n ...,\n \"status\": \"CANCELLED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 15,\n \"failedCount\": 0,\n \"discardedCount\": 85,\n \"totalCount\": 100,\n \"results\": [],\n \"generalError\": null,\n \"cancellationTs\": 1747065908414\n }\n}\n\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getJobById", + "summary": "Get Integrations By Ids (getIntegrationsByIds)", + "description": "Requested integrations must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getIntegrationsByIds", "parameters": [ { - "name": "id", - "in": "path", + "name": "integrationIds", + "in": "query", + "description": "A list of integration ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -65725,7 +65724,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "type": "array", + "items": { + "$ref": "#/components/schemas/Integration" + } } } } @@ -65844,13 +65846,16 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/job/{id}": { + "get": { "tags": [ "job-controller" ], - "summary": "deleteJob", - "operationId": "deleteJob", + "summary": "Get job by id (getJobById)", + "description": "Fetches job info by id.\n\nExample of a RUNNING CF_REPROCESSING job response:\n```json\n{\n \"id\": {\n \"entityType\": \"JOB\",\n \"id\": \"475e94e0-2f2d-11f0-8240-91e99922a704\"\n },\n \"createdTime\": 1747053196590,\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"46859a00-2f2d-11f0-8240-91e99922a704\"\n },\n \"type\": \"CF_REPROCESSING\",\n \"key\": \"474e4130-2f2d-11f0-8240-91e99922a704\",\n \"entityId\": {\n \"entityType\": \"DEVICE_PROFILE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"status\": \"RUNNING\",\n \"configuration\": {\n \"type\": \"CF_REPROCESSING\",\n \"calculatedFieldId\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"474e4130-2f2d-11f0-8240-91e99922a704\"\n },\n \"startTs\": 1747051995760,\n \"endTs\": 1747052895760,\n \"tasksKey\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"toReprocess\": null\n },\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CF_REPROCESSING job with failures:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 0,\n \"failedCount\": 2,\n \"discardedCount\": 0,\n \"totalCount\": 2,\n \"results\": [\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9fd41f20-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 1\"\n }\n }\n },\n {\n \"jobType\": \"CF_REPROCESSING\",\n \"key\": \"c3cdbd42-799e-4d3a-9aad-9310f767aa36\",\n \"success\": false,\n \"discarded\": false,\n \"failure\": {\n \"error\": \"Failed to fetch temperature: Failed to fetch timeseries data\",\n \"entityInfo\": {\n \"id\": {\n \"entityType\": \"DEVICE\",\n \"id\": \"9ffc4090-31a1-11f0-933e-27998d6db02e\"\n },\n \"name\": \"Test device 2\"\n }\n }\n }\n ],\n \"generalError\": null,\n \"startTs\": 1747323069445,\n \"finishTs\": 1747323070585,\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a FAILED job result with general error:\n```json\n{\n ...,\n \"status\": \"FAILED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 1,\n \"failedCount\": 0,\n \"discardedCount\": 0,\n \"totalCount\": null,\n \"results\": [],\n \"generalError\": \"Timeout to find devices by profile\",\n \"cancellationTs\": 0\n }\n}\n\n```\n\nExample of a CANCELLED job result:\n```json\n{\n ...,\n \"status\": \"CANCELLED\",\n ...,\n \"result\": {\n \"jobType\": \"CF_REPROCESSING\",\n \"successfulCount\": 15,\n \"failedCount\": 0,\n \"discardedCount\": 85,\n \"totalCount\": 100,\n \"results\": [],\n \"generalError\": null,\n \"cancellationTs\": 1747065908414\n }\n}\n\n```\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getJobById", "parameters": [ { "name": "id", @@ -65864,7 +65869,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } }, "400": { "description": "Bad Request", @@ -65980,16 +65992,152 @@ "ApiKeyForm": [] } ] - } - }, - "/api/job/{id}/cancel": { - "post": { + }, + "delete": { "tags": [ "job-controller" ], - "summary": "Cancel job (cancelJob)", - "description": "Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING.\n\nFor a running job, all the tasks not yet processed will be discarded.\n\nSee the example of a cancelled job result in getJobById method description.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "cancelJob", + "summary": "deleteJob", + "operationId": "deleteJob", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid UUID string: 123", + "errorCode": 31, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "status": 403, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "status": 404, + "message": "Requested item wasn't found!", + "errorCode": 32, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "status": 429, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "timestamp": 1609459200000 + } + } + } + } + } + } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/job/{id}/cancel": { + "post": { + "tags": [ + "job-controller" + ], + "summary": "Cancel job (cancelJob)", + "description": "Cancels the job. The status of the job must be QUEUED, PENDING or RUNNING.\n\nFor a running job, all the tasks not yet processed will be discarded.\n\nSee the example of a cancelled job result in getJobById method description.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "cancelJob", "parameters": [ { "name": "id", @@ -67100,806 +67248,25 @@ ] } }, - "/api/mail/config/template": { - "get": { - "tags": [ - "mail-config-template-controller" - ], - "summary": "Get the list of all OAuth2 client registration templates (getMailConfigTemplates)\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": "getMailConfigTemplates", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/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" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid request body", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/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" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/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" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/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" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] - } - }, - "/api/mobile/bundle/{id}/oauth2Clients": { - "put": { + "/api/mail/config/template": { + "get": { "tags": [ - "mobile-app-bundle-controller" - ], - "summary": "Update oauth2 clients (updateMobileAppBundleOauth2Clients)", - "description": "Update oauth2 clients of the specified mobile app bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "updateMobileAppBundleOauth2Clients", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } + "mail-config-template-controller" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" + "summary": "Get the list of all OAuth2 client registration templates (getMailConfigTemplates)\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": "getMailConfigTemplates", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" } } } }, - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, "400": { "description": "Bad Request", "content": { @@ -68016,45 +67383,45 @@ ] } }, - "/api/mobile": { - "get": { + "/api/mobile/bundle": { + "post": { "tags": [ - "mobile-app-controller" + "mobile-app-bundle-controller" ], - "summary": "Get user mobile app basic info (getUserMobileInfo)", - "description": "\n\nAvailable for any authorized user. ", - "operationId": "getUserMobileInfo", + "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": "pkgName", - "in": "query", - "description": "Mobile application package name", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "platform", + "name": "oauth2ClientIds", "in": "query", - "description": "Platform type", - "required": true, + "description": "A list of oauth2 client ids, separated by comma ','", + "required": false, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "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/UserMobileInfo" + "$ref": "#/components/schemas/MobileAppBundle" } } } @@ -68071,7 +67438,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -68175,69 +67542,22 @@ ] } }, - "/api/mobile/app": { + "/api/mobile/bundle/info/{id}": { "get": { "tags": [ - "mobile-app-controller" + "mobile-app-bundle-controller" ], - "summary": "Get mobile app infos (getTenantMobileApps)", + "summary": "Get mobile app bundle info by id (getMobileAppBundleInfoById)", "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getTenantMobileApps", + "operationId": "getMobileAppBundleInfoById", "parameters": [ { - "name": "platformType", - "in": "query", - "description": "Platform type: ANDROID or IOS", - "required": false, - "schema": { - "$ref": "#/components/schemas/PlatformType" - } - }, - { - "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", + "name": "id", + "in": "path", "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" + "type": "string", + "format": "uuid" } } ], @@ -68247,7 +67567,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataMobileApp" + "$ref": "#/components/schemas/MobileAppBundleInfo" } } } @@ -68366,31 +67686,72 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/mobile/bundle/infos": { + "get": { "tags": [ - "mobile-app-controller" + "mobile-app-bundle-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" - } + "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" } }, - "required": true - }, + { + "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/MobileApp" + "$ref": "#/components/schemas/PageDataMobileAppBundleInfo" } } } @@ -68407,7 +67768,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -68511,14 +67872,14 @@ ] } }, - "/api/mobile/app/{id}": { - "get": { + "/api/mobile/bundle/{id}": { + "delete": { "tags": [ - "mobile-app-controller" + "mobile-app-bundle-controller" ], - "summary": "Get mobile info by id (getMobileAppById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "getMobileAppById", + "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", @@ -68532,14 +67893,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MobileApp" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -68655,14 +68009,16 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/mobile/bundle/{id}/oauth2Clients": { + "put": { "tags": [ - "mobile-app-controller" + "mobile-app-bundle-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", + "summary": "Update oauth2 clients (updateMobileAppBundleOauth2Clients)", + "description": "Update oauth2 clients of the specified mobile app bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "updateMobileAppBundleOauth2Clients", "parameters": [ { "name": "id", @@ -68674,6 +68030,20 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK" @@ -68794,13 +68164,14 @@ ] } }, - "/api/noauth/mobile": { + "/api/mobile": { "get": { "tags": [ "mobile-app-controller" ], - "summary": "Get mobile app login info (getLoginMobileInfo)", - "operationId": "getLoginMobileInfo", + "summary": "Get user mobile app basic info (getUserMobileInfo)", + "description": "\n\nAvailable for any authorized user. ", + "operationId": "getUserMobileInfo", "parameters": [ { "name": "pkgName", @@ -68831,137 +68202,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LoginMobileInfo" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - } - } - }, - "/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": { - "$ref": "#/components/schemas/NotificationDeliveryMethod" - } + "$ref": "#/components/schemas/UserMobileInfo" } } } @@ -69082,40 +68323,82 @@ ] } }, - "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { - "post": { + "/api/mobile/app": { + "get": { "tags": [ - "notification-controller" + "mobile-app-controller" ], - "summary": "Send entity limit increase request notification to System/Tenant administrators (sendEntitiesLimitIncreaseRequest)", - "description": "Send entity limit increase request notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "sendEntitiesLimitIncreaseRequest", + "summary": "Get mobile app infos (getTenantMobileApps)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getTenantMobileApps", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "Entity type", + "name": "platformType", + "in": "query", + "description": "Platform type: ANDROID or IOS", + "required": false, + "schema": { + "$ref": "#/components/schemas/PlatformType" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "enum": [ - "DEVICE", - "ASSET", - "CUSTOMER", - "USER", - "DASHBOARD", - "RULE_CHAIN", - "EDGE", - "INTEGRATION", - "CONVERTER", - "SCHEDULER_EVENT" - ] + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataMobileApp" + } + } + } }, "400": { "description": "Bad Request", @@ -69129,7 +68412,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -69231,21 +68514,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/request": { + }, "post": { "tags": [ - "notification-controller" + "mobile-app-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", + "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/NotificationRequest" + "$ref": "#/components/schemas/MobileApp" } } }, @@ -69257,7 +68538,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequest" + "$ref": "#/components/schemas/MobileApp" } } } @@ -69378,44 +68659,32 @@ ] } }, - "/api/notification/request/preview": { - "post": { + "/api/mobile/app/{id}": { + "get": { "tags": [ - "notification-controller" + "mobile-app-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", + "summary": "Get mobile info by id (getMobileAppById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "getMobileAppById", "parameters": [ { - "name": "recipientsPreviewSize", - "in": "query", - "description": "Amount of the recipients to show in preview", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRequestPreview" + "$ref": "#/components/schemas/MobileApp" } } } @@ -69432,7 +68701,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -69534,16 +68803,14 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/request/{id}": { - "get": { + }, + "delete": { "tags": [ - "notification-controller" + "mobile-app-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", + "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", @@ -69557,14 +68824,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRequestInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -69680,28 +68940,49 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/noauth/mobile": { + "get": { "tags": [ - "notification-controller" + "mobile-app-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", + "summary": "Get mobile app login info (getLoginMobileInfo)", + "operationId": "getLoginMobileInfo", "parameters": [ { - "name": "id", - "in": "path", + "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", - "format": "uuid" + "enum": [ + "ANDROID", + "IOS" + ] } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginMobileInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -69808,81 +69089,27 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/notification/requests": { + "/api/notification/deliveryMethods": { "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" - } - } - ], + "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": { - "$ref": "#/components/schemas/PageDataNotificationRequestInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationDeliveryMethod" + } } } } @@ -70003,26 +69230,33 @@ ] } }, - "/api/notification/sendAddonAccessError/{addonType}": { + "/api/notification/entitiesLimitIncreaseRequest/{entityType}": { "post": { "tags": [ "notification-controller" ], - "summary": "Send add-on access error notification to System/Tenant administrators (sendAddonAccessError)", - "description": "Send add-on access error notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "sendAddonAccessError", + "summary": "Send entity limit increase request notification to System/Tenant administrators (sendEntitiesLimitIncreaseRequest)", + "description": "Send entity limit increase request notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "sendEntitiesLimitIncreaseRequest", "parameters": [ { - "name": "addonType", + "name": "entityType", "in": "path", - "description": "Addon type", + "description": "Entity type", "required": true, "schema": { "type": "string", "enum": [ + "DEVICE", + "ASSET", + "CUSTOMER", + "USER", + "DASHBOARD", + "RULE_CHAIN", "EDGE", - "TRENDZ", - "WHITE_LABELING" + "INTEGRATION", + "CONVERTER", + "SCHEDULER_EVENT" ] } } @@ -70147,21 +69381,31 @@ ] } }, - "/api/notification/settings": { - "get": { + "/api/notification/request": { + "post": { "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", + "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/NotificationSettings" + "$ref": "#/components/schemas/NotificationRequest" } } } @@ -70178,7 +69422,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -70280,19 +69524,34 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/notification/request/preview": { "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", + "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/NotificationSettings" + "$ref": "#/components/schemas/NotificationRequest" } } }, @@ -70304,7 +69563,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationSettings" + "$ref": "#/components/schemas/NotificationRequestPreview" } } } @@ -70425,20 +69684,32 @@ ] } }, - "/api/notification/settings/user": { + "/api/notification/request/{id}": { "get": { "tags": [ "notification-controller" ], - "summary": "getUserNotificationSettings", - "operationId": "getUserNotificationSettings", + "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/UserNotificationSettings" + "$ref": "#/components/schemas/NotificationRequestInfo" } } } @@ -70558,32 +69829,27 @@ } ] }, - "post": { + "delete": { "tags": [ "notification-controller" ], - "summary": "saveUserNotificationSettings", - "operationId": "saveUserNotificationSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserNotificationSettings" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -70597,7 +69863,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -70701,28 +69967,73 @@ ] } }, - "/api/notification/{id}": { - "delete": { + "/api/notification/requests": { + "get": { "tags": [ "notification-controller" ], - "summary": "Delete notification (deleteNotification)", - "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", - "operationId": "deleteNotification", + "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": "id", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "format": "uuid" + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataNotificationRequestInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -70840,22 +70151,27 @@ ] } }, - "/api/notification/{id}/read": { - "put": { + "/api/notification/sendAddonAccessError/{addonType}": { + "post": { "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", + "summary": "Send add-on access error notification to System/Tenant administrators (sendAddonAccessError)", + "description": "Send add-on access error notification by Tenant Administrator or Customer User to System/Tenant administrators.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "sendAddonAccessError", "parameters": [ { - "name": "id", + "name": "addonType", "in": "path", + "description": "Addon type", "required": true, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "EDGE", + "TRENDZ", + "WHITE_LABELING" + ] } } ], @@ -70875,7 +70191,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -70979,93 +70295,21 @@ ] } }, - "/api/notifications": { + "/api/notification/settings": { "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" - ] - } - } - ], + "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/PageDataNotification" + "$ref": "#/components/schemas/NotificationSettings" } } } @@ -71184,34 +70428,34 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notifications/read": { - "put": { + }, + "post": { "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" - ] + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationSettings" + } + } + } }, "400": { "description": "Bad Request", @@ -71225,7 +70469,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -71329,37 +70573,20 @@ ] } }, - "/api/notifications/unread/count": { + "/api/notification/settings/user": { "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" - ] - } - } - ], + "summary": "getUserNotificationSettings", + "operationId": "getUserNotificationSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -71478,21 +70705,18 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/rule": { + }, "post": { "tags": [ - "notification-rule-controller" + "notification-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", + "summary": "saveUserNotificationSettings", + "operationId": "saveUserNotificationSettings", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRule" + "$ref": "#/components/schemas/UserNotificationSettings" } } }, @@ -71504,7 +70728,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationRule" + "$ref": "#/components/schemas/UserNotificationSettings" } } } @@ -71625,14 +70849,14 @@ ] } }, - "/api/notification/rule/{id}": { - "get": { + "/api/notification/{id}": { + "delete": { "tags": [ - "notification-rule-controller" + "notification-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", + "summary": "Delete notification (deleteNotification)", + "description": "Deletes notification by its id.\n\nAvailable for any authorized user. ", + "operationId": "deleteNotification", "parameters": [ { "name": "id", @@ -71646,14 +70870,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationRuleInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -71769,14 +70986,16 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/{id}/read": { + "put": { "tags": [ - "notification-rule-controller" + "notification-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", + "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", @@ -71908,14 +71127,14 @@ ] } }, - "/api/notification/rules": { + "/api/notifications": { "get": { "tags": [ - "notification-rule-controller" + "notification-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", + "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", @@ -71940,7 +71159,7 @@ { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filter based on rule's name", + "description": "Case-insensitive 'substring' filter based on notification subject or text", "required": false, "schema": { "type": "string" @@ -71963,160 +71182,38 @@ "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataNotificationRuleInfo" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ { - "HttpLoginForm": [] + "name": "unreadOnly", + "in": "query", + "description": "To search for unread notifications only", + "required": false, + "schema": { + "type": "boolean", + "default": false + } }, { - "ApiKeyForm": [] + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, + "schema": { + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] + } } - ] - } - }, - "/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`, `USER_GROUP_LIST`, `TENANT_ADMINISTRATORS`, `USER_ROLE`, `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" + "$ref": "#/components/schemas/PageDataNotification" } } } @@ -72133,7 +71230,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -72237,56 +71334,32 @@ ] } }, - "/api/notification/target/recipients": { - "post": { + "/api/notifications/read": { + "put": { "tags": [ - "notification-target-controller" + "notification-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", + "summary": "Mark all notifications as read (markAllNotificationsAsRead)", + "description": "Marks all unread notifications as read.\n\nAvailable for any authorized user. ", + "operationId": "markAllNotificationsAsRead", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "page", + "name": "deliveryMethod", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, + "description": "Delivery method", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "enum": [ + "WEB", + "MOBILE_APP" + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationTarget" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataUser" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -72300,7 +71373,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -72404,22 +71477,26 @@ ] } }, - "/api/notification/target/{id}": { + "/api/notifications/unread/count": { "get": { "tags": [ - "notification-target-controller" + "notification-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", + "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": "id", - "in": "path", - "required": true, + "name": "deliveryMethod", + "in": "query", + "description": "Delivery method", + "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "WEB", + "MOBILE_APP" + ] } } ], @@ -72429,7 +71506,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTarget" + "type": "integer", + "format": "int32" } } } @@ -72548,28 +71626,36 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/notification/rule": { + "post": { "tags": [ - "notification-target-controller" + "notification-rule-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" + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationRule" + } + } + } }, "400": { "description": "Bad Request", @@ -72583,7 +71669,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -72687,60 +71773,22 @@ ] } }, - "/api/notification/targets": { + "/api/notification/rule/{id}": { "get": { "tags": [ - "notification-target-controller" + "notification-rule-controller" ], - "summary": "Get notification targets (getNotificationTargets)", - "description": "Returns the page of notification targets 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": "getNotificationTargets", + "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": "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", + "name": "id", + "in": "path", "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" + "type": "string", + "format": "uuid" } } ], @@ -72750,7 +71798,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTarget" + "$ref": "#/components/schemas/NotificationRuleInfo" } } } @@ -72869,43 +71917,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/notification/targets/list": { - "get": { + }, + "delete": { "tags": [ - "notification-target-controller" + "notification-rule-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": "getNotificationTargetsByIds", + "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": "ids", - "in": "query", - "description": "Comma-separated list of uuids representing targets ids", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationTarget" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -73023,24 +72056,15 @@ ] } }, - "/api/notification/targets/notificationType/{notificationType}": { + "/api/notification/rules": { "get": { "tags": [ - "notification-target-controller" + "notification-rule-controller" ], - "summary": "Get notification targets by supported notification type (getNotificationTargetsBySupportedNotificationType)", - "description": "Returns the page of notification targets filtered by notification type that they can be used for.\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": "getNotificationTargetsBySupportedNotificationType", + "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": "notificationType", - "in": "path", - "description": "Notification type to filter targets by", - "required": true, - "schema": { - "$ref": "#/components/schemas/NotificationType" - } - }, { "name": "pageSize", "in": "query", @@ -73064,7 +72088,7 @@ { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filed based on the target's name", + "description": "Case-insensitive 'substring' filter based on rule's name", "required": false, "schema": { "type": "string" @@ -73095,7 +72119,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTarget" + "$ref": "#/components/schemas/PageDataNotificationRuleInfo" } } } @@ -73216,43 +72240,31 @@ ] } }, - "/api/notification/slack/conversations": { - "get": { + "/api/notification/target": { + "post": { "tags": [ - "notification-template-controller" + "notification-target-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": { - "$ref": "#/components/schemas/SlackConversationType" + "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`, `USER_GROUP_LIST`, `TENANT_ADMINISTRATORS`, `USER_ROLE`, `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" + } } }, - { - "name": "token", - "in": "query", - "description": "Slack bot token. If absent - system Slack settings will be used", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SlackConversation" - } + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -73269,7 +72281,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -73373,19 +72385,41 @@ ] } }, - "/api/notification/template": { + "/api/notification/target/recipients": { "post": { "tags": [ - "notification-template-controller" + "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" + } + } ], - "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" + "$ref": "#/components/schemas/NotificationTarget" } } }, @@ -73397,7 +72431,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/PageDataUser" } } } @@ -73518,14 +72552,14 @@ ] } }, - "/api/notification/template/{id}": { + "/api/notification/target/{id}": { "get": { "tags": [ - "notification-template-controller" + "notification-target-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", + "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", @@ -73543,7 +72577,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationTemplate" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -73665,11 +72699,11 @@ }, "delete": { "tags": [ - "notification-template-controller" + "notification-target-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", + "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", @@ -73801,14 +72835,14 @@ ] } }, - "/api/notification/templates": { + "/api/notification/targets": { "get": { "tags": [ - "notification-template-controller" + "notification-target-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", + "summary": "Get notification targets (getNotificationTargets)", + "description": "Returns the page of notification targets 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": "getNotificationTargets", "parameters": [ { "name": "pageSize", @@ -73833,7 +72867,7 @@ { "name": "textSearch", "in": "query", - "description": "Case-insensitive 'substring' filter based on template's name and notification type", + "description": "Case-insensitive 'substring' filed based on the target's name", "required": false, "schema": { "type": "string" @@ -73856,18 +72890,6 @@ "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": { @@ -73876,7 +72898,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataNotificationTemplate" + "$ref": "#/components/schemas/PageDataNotificationTarget" } } } @@ -73997,14 +73019,28 @@ ] } }, - "/api/oauth2/config/template": { + "/api/notification/targets/list": { "get": { "tags": [ - "o-auth-2-config-template-controller" + "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": "getNotificationTargetsByIds", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Comma-separated list of uuids representing targets ids", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } ], - "summary": "Get the list of all OAuth2 client registration templates (getOAuth2ClientRegistrationTemplates)\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": "getOAuth2ClientRegistrationTemplates", "responses": { "200": { "description": "OK", @@ -74013,7 +73049,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + "$ref": "#/components/schemas/NotificationTarget" } } } @@ -74133,174 +73169,84 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/notification/targets/notificationType/{notificationType}": { + "get": { "tags": [ - "o-auth-2-config-template-controller" + "notification-target-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" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid request body", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } + "summary": "Get notification targets by supported notification type (getNotificationTargetsBySupportedNotificationType)", + "description": "Returns the page of notification targets filtered by notification type that they can be used for.\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": "getNotificationTargetsBySupportedNotificationType", + "parameters": [ + { + "name": "notificationType", + "in": "path", + "description": "Notification type to filter targets by", + "required": true, + "schema": { + "$ref": "#/components/schemas/NotificationType" } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filed based on the target's name", + "required": false, + "schema": { + "type": "string" } }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - }, - "security": [ { - "HttpLoginForm": [] + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string" + } }, { - "ApiKeyForm": [] - } - ] - } - }, - "/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, + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { "type": "string" - }, - "example": "139b1f81-2f5d-11ec-9dbe-9b627e1a88f4" + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataNotificationTarget" + } + } + } }, "400": { "description": "Bad Request", @@ -74418,36 +73364,30 @@ ] } }, - "/api/noauth/oauth2Clients": { - "post": { + "/api/notification/slack/conversations": { + "get": { "tags": [ - "o-auth-2-controller" + "notification-template-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", + "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": "pkgName", + "name": "type", "in": "query", - "description": "Mobile application package name, to find OAuth2 clients where there is configured mobile application with such package name", - "required": false, + "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/SlackConversationType" } }, { - "name": "platform", + "name": "token", "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", + "description": "Slack bot token. If absent - system Slack settings will be used", "required": false, "schema": { - "type": "string", - "enum": [ - "WEB", - "ANDROID", - "IOS" - ] + "type": "string" } } ], @@ -74459,7 +73399,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/OAuth2ClientLoginInfo" + "$ref": "#/components/schemas/SlackConversation" } } } @@ -74477,7 +73417,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -74570,22 +73510,30 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/oauth2/client": { + "/api/notification/template": { "post": { "tags": [ - "o-auth-2-controller" + "notification-template-controller" ], - "summary": "Save OAuth2 Client (saveOAuth2Client)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveOAuth2Client", + "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/OAuth2Client" + "$ref": "#/components/schemas/NotificationTemplate" } } }, @@ -74597,7 +73545,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -74718,60 +73666,22 @@ ] } }, - "/api/oauth2/client/infos": { + "/api/notification/template/{id}": { "get": { "tags": [ - "o-auth-2-controller" + "notification-template-controller" ], - "summary": "Get OAuth2 Client infos (findOAuth2ClientInfos)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "findOAuth2ClientInfos", + "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": "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", + "name": "id", + "in": "path", "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" + "type": "string", + "format": "uuid" } } ], @@ -74781,7 +73691,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" + "$ref": "#/components/schemas/NotificationTemplate" } } } @@ -74900,43 +73810,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/oauth2/client/list": { - "get": { + }, + "delete": { "tags": [ - "o-auth-2-controller" + "notification-template-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' or 'CUSTOMER_USER' authority.", - "operationId": "findTenantOAuth2ClientInfosByIds", + "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": "clientIds", - "in": "query", - "description": "A list of oauth2 ids, separated by comma ','", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OAuth2ClientInfo" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -75054,22 +73949,72 @@ ] } }, - "/api/oauth2/client/{id}": { + "/api/notification/templates": { "get": { "tags": [ - "o-auth-2-controller" + "notification-template-controller" ], - "summary": "Get OAuth2 Client by id (getOAuth2ClientById)", - "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "getOAuth2ClientById", + "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": "id", - "in": "path", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string", - "format": "uuid" + "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" + } } } ], @@ -75079,7 +74024,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OAuth2Client" + "$ref": "#/components/schemas/PageDataNotificationTemplate" } } } @@ -75198,28 +74143,29 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/oauth2/config/template": { + "get": { "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' or 'CUSTOMER_USER' authority.", - "operationId": "deleteOauth2Client", - "parameters": [ - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } + "o-auth-2-config-template-controller" ], + "summary": "Get the list of all OAuth2 client registration templates (getOAuth2ClientRegistrationTemplates)\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": "getOAuth2ClientRegistrationTemplates", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" + } + } + } + } }, "400": { "description": "Bad Request", @@ -75335,23 +74281,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/oauth2/loginProcessingUrl": { - "get": { + }, + "post": { "tags": [ - "o-auth-2-controller" + "o-auth-2-config-template-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' or 'CUSTOMER_USER' authority.", - "operationId": "getLoginProcessingUrl", + "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": { - "type": "string" + "$ref": "#/components/schemas/OAuth2ClientRegistrationTemplate" } } } @@ -75368,7 +74322,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -75472,34 +74426,29 @@ ] } }, - "/api/otaPackage": { - "post": { + "/api/oauth2/config/template/{clientRegistrationTemplateId}": { + "delete": { "tags": [ - "ota-package-controller" + "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" + } ], - "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" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -75513,7 +74462,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -75617,23 +74566,37 @@ ] } }, - "/api/otaPackage/info/{otaPackageId}": { - "get": { + "/api/noauth/oauth2Clients": { + "post": { "tags": [ - "ota-package-controller" + "o-auth-2-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", + "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": "otaPackageId", - "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "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": { @@ -75642,7 +74605,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OtaPackageInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientLoginInfo" + } } } } @@ -75659,7 +74625,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -75752,43 +74718,34 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/otaPackage/{otaPackageId}": { - "get": { + "/api/oauth2/client": { + "post": { "tags": [ - "ota-package-controller" + "o-auth-2-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" + "summary": "Save OAuth2 Client (saveOAuth2Client)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' 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/OtaPackage" + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -75805,7 +74762,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -75907,78 +74864,72 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/oauth2/client/infos": { + "get": { "tags": [ - "ota-package-controller" + "o-auth-2-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", + "summary": "Get OAuth2 Client infos (findOAuth2ClientInfos)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "findOAuth2ClientInfos", "parameters": [ { - "name": "otaPackageId", - "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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": "checksum", + "name": "sortProperty", "in": "query", - "description": "OTA Package checksum. For example, '0xd87f7e0c'", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string" } }, { - "name": "checksumAlgorithm", + "name": "sortOrder", "in": "query", - "description": "OTA Package checksum algorithm.", - "required": true, + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, "schema": { - "type": "string", - "enum": [ - "MD5", - "SHA256", - "SHA384", - "SHA512", - "CRC32", - "MURMUR3_32", - "MURMUR3_128" - ] + "type": "string" } } ], - "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" + "$ref": "#/components/schemas/PageDataOAuth2ClientInfo" } } } @@ -75995,7 +74946,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -76097,28 +75048,43 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/oauth2/client/list": { + "get": { "tags": [ - "ota-package-controller" + "o-auth-2-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", + "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' or 'CUSTOMER_USER' authority.", + "operationId": "findTenantOAuth2ClientInfosByIds", "parameters": [ { - "name": "otaPackageId", - "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "clientIds", + "in": "query", + "description": "A list of oauth2 ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth2ClientInfo" + } + } + } + } }, "400": { "description": "Bad Request", @@ -76236,22 +75202,22 @@ ] } }, - "/api/otaPackage/{otaPackageId}/download": { + "/api/oauth2/client/{id}": { "get": { "tags": [ - "ota-package-controller" + "o-auth-2-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", + "summary": "Get OAuth2 Client by id (getOAuth2ClientById)", + "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "getOAuth2ClientById", "parameters": [ { - "name": "otaPackageId", + "name": "id", "in": "path", - "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], @@ -76261,8 +75227,7 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/OAuth2Client" } } } @@ -76381,90 +75346,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/otaPackages": { - "get": { + }, + "delete": { "tags": [ - "ota-package-controller" + "o-auth-2-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", + "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' or 'CUSTOMER_USER' authority.", + "operationId": "deleteOauth2Client", "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", + "name": "id", + "in": "path", "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" - ] + "format": "uuid" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -76582,107 +75485,21 @@ ] } }, - "/api/otaPackages/group/{groupId}/{type}": { + "/api/oauth2/loginProcessingUrl": { "get": { "tags": [ - "ota-package-controller" - ], - "summary": "Get group OTA Package Infos (getGroupOtaPackages)", - "description": "Returns a page of OTA Package Info objects owned by tenant, and by entity group. 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": "getGroupOtaPackages", - "parameters": [ - { - "name": "groupId", - "in": "path", - "description": "A string value representing the Entity Group 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" - ] - } - } + "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' or 'CUSTOMER_USER' authority.", + "operationId": "getLoginProcessingUrl", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "type": "string" } } } @@ -76803,107 +75620,31 @@ ] } }, - "/api/otaPackages/{deviceProfileId}/{type}": { - "get": { + "/api/otaPackage": { + "post": { "tags": [ "ota-package-controller" ], - "summary": "Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType)", - "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": "getOtaPackagesByDeviceProfileAndType", - "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" - ] + "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" + } } }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataOtaPackageInfo" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -76920,7 +75661,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -77024,59 +75765,35 @@ ] } }, - "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { - "post": { + "/api/otaPackage/info/{otaPackageId}": { + "get": { "tags": [ - "owner-controller" + "ota-package-controller" ], - "summary": "Change owner to customer (changeOwnerToCustomer)", - "description": "Tenant/Customer changes Owner to Customer or sub-Customer. Sub-Customer can`t perform this operation! \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "changeOwnerToCustomer", + "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": "ownerId", - "in": "path", - "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "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" - } - }, - { - "name": "entityId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "An optional list of additional entity group ids", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OtaPackageInfo" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -77090,7 +75807,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -77194,59 +75911,35 @@ ] } }, - "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { - "post": { + "/api/otaPackage/{otaPackageId}": { + "get": { "tags": [ - "owner-controller" + "ota-package-controller" ], - "summary": "Change owner to tenant (changeOwnerToTenant)", - "description": "Tenant changes Owner from Customer or sub-Customer to Tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "changeOwnerToTenant", + "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": "ownerId", - "in": "path", - "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "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" - } - }, - { - "name": "entityId", + "name": "otaPackageId", "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the ota package id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "description": "An optional list of additional entity group ids", - "items": { - "type": "string" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OtaPackage" } } } - } - }, - "responses": { - "200": { - "description": "OK" }, "400": { "description": "Bad Request", @@ -77260,7 +75953,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -77362,23 +76055,78 @@ "ApiKeyForm": [] } ] - } - }, - "/api/mobile/qr/deepLink": { - "get": { + }, + "post": { "tags": [ - "qr-code-settings-controller" + "ota-package-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", + "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": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OtaPackageInfo" } } } @@ -77395,7 +76143,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -77497,26 +76245,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/mobile/qr/merged": { - "get": { + }, + "delete": { "tags": [ - "qr-code-settings-controller" + "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" + } + } ], - "summary": "Get QR code configuration for home page (getMergedMobileAppSettings)", - "description": "The response payload contains ui configuration of qr code\n\nAvailable for any authorized user. ", - "operationId": "getMergedMobileAppSettings", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QrCodeSettings" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -77634,21 +76384,33 @@ ] } }, - "/api/mobile/qr/settings": { + "/api/otaPackage/{otaPackageId}/download": { "get": { "tags": [ - "qr-code-settings-controller" + "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" + } + } ], - "summary": "Get Mobile application settings (getQrCodeSettings)", - "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" + "type": "string", + "format": "binary" } } } @@ -77767,31 +76529,87 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/otaPackages": { + "get": { "tags": [ - "qr-code-settings-controller" + "ota-package-controller" ], - "summary": "Create Or Update the Mobile application settings (saveQrCodeSettings)", - "description": "The request payload contains configuration for android/iOS applications and platform qr code widget settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", - "operationId": "saveQrCodeSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/QrCodeSettings" - } + "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" } }, - "required": true - }, + { + "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/QrCodeSettings" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -77808,7 +76626,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -77912,21 +76730,98 @@ ] } }, - "/api/noauth/qr": { + "/api/otaPackages/group/{groupId}/{type}": { "get": { "tags": [ - "qr-code-settings-controller" + "ota-package-controller" ], - "summary": "getApplicationRedirect", - "operationId": "getApplicationRedirect", + "summary": "Get group OTA Package Infos (getGroupOtaPackages)", + "description": "Returns a page of OTA Package Info objects owned by tenant, and by entity group. 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": "getGroupOtaPackages", "parameters": [ { - "name": "User-Agent", - "in": "header", + "name": "groupId", + "in": "path", + "description": "A string value representing the Entity Group 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": { @@ -77935,7 +76830,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -78045,26 +76940,109 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/qr/{secret}": { + "/api/otaPackages/{deviceProfileId}/{type}": { "get": { "tags": [ - "qr-code-settings-controller" + "ota-package-controller" ], - "summary": "Get User Token (getUserTokenByMobileSecret)", - "description": "Returns the token of the User based on the provided secret key.", - "operationId": "getUserTokenByMobileSecret", + "summary": "Get OTA Package Infos by Device Profile and Type (getOtaPackagesByDeviceProfileAndType)", + "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": "getOtaPackagesByDeviceProfileAndType", "parameters": [ { - "name": "secret", + "name": "deviceProfileId", "in": "path", - "description": "A string value representing short-lived secret key", + "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": { @@ -78073,7 +77051,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "$ref": "#/components/schemas/PageDataOtaPackageInfo" } } } @@ -78183,100 +77161,70 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/queues": { - "get": { + "/api/owner/CUSTOMER/{ownerId}/{entityType}/{entityId}": { + "post": { "tags": [ - "queue-controller" + "owner-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", + "summary": "Change owner to customer (changeOwnerToCustomer)", + "description": "Tenant/Customer changes Owner to Customer or sub-Customer. Sub-Customer can`t perform this operation! \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "changeOwnerToCustomer", "parameters": [ { - "name": "serviceType", - "in": "query", - "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "name": "ownerId", + "in": "path", + "description": "A string value representing the customer id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "TB-RULE-ENGINE", - "TB-CORE", - "TB-TRANSPORT", - "JS-EXECUTOR" - ] + "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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" + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "An optional list of additional entity group ids", + "items": { + "type": "string" } } } + } + }, + "responses": { + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -78290,7 +77238,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -78392,28 +77340,42 @@ "ApiKeyForm": [] } ] - }, + } + }, + "/api/owner/TENANT/{ownerId}/{entityType}/{entityId}": { "post": { "tags": [ - "queue-controller" + "owner-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", + "summary": "Change owner to tenant (changeOwnerToTenant)", + "description": "Tenant changes Owner from Customer or sub-Customer to Tenant. \n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "changeOwnerToTenant", "parameters": [ { - "name": "serviceType", - "in": "query", - "description": "Service type (implemented only for the TB-RULE-ENGINE)", + "name": "ownerId", + "in": "path", + "description": "A string value representing the tenant id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string", - "enum": [ - "TB-RULE-ENGINE", - "TB-CORE", - "TB-TRANSPORT", - "JS-EXECUTOR" - ] + "type": "string" + } + }, + { + "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" } } ], @@ -78421,19 +77383,150 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "type": "array", + "description": "An optional list of additional entity group ids", + "items": { + "type": "string" + } } } + } + }, + "responses": { + "200": { + "description": "OK" }, - "required": true + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid request body", + "errorCode": 31, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "status": 403, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "status": 404, + "message": "Requested item wasn't found!", + "errorCode": 32, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "status": 429, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "timestamp": 1609459200000 + } + } + } + } + } + } }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/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": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/Queue" + "type": "string" } } } @@ -78450,7 +77543,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -78554,32 +77647,21 @@ ] } }, - "/api/queues/name/{queueName}": { + "/api/mobile/qr/merged": { "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" - } - } + "qr-code-settings-controller" ], + "summary": "Get QR code configuration for home page (getMergedMobileAppSettings)", + "description": "The response payload contains ui configuration of qr code\n\nAvailable for any authorized user. ", + "operationId": "getMergedMobileAppSettings", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Queue" + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -78700,32 +77782,21 @@ ] } }, - "/api/queues/{queueId}": { + "/api/mobile/qr/settings": { "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" - } - } + "qr-code-settings-controller" ], + "summary": "Get Mobile application settings (getQrCodeSettings)", + "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/Queue" + "$ref": "#/components/schemas/QrCodeSettings" } } } @@ -78845,27 +77916,33 @@ } ] }, - "delete": { + "post": { "tags": [ - "queue-controller" + "qr-code-settings-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" + "summary": "Create Or Update the Mobile application settings (saveQrCodeSettings)", + "description": "The request payload contains configuration for android/iOS applications and platform qr code widget settings.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority.", + "operationId": "saveQrCodeSettings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QrCodeSettings" + } } - } - ], + }, + "required": true + }, "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QrCodeSettings" + } + } + } }, "400": { "description": "Bad Request", @@ -78879,7 +77956,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -78983,68 +78060,21 @@ ] } }, - "/api/queueStats": { + "/api/noauth/qr": { "get": { "tags": [ - "queue-stats-controller" + "qr-code-settings-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": "getTenantQueueStats", + "summary": "getApplicationRedirect", + "operationId": "getApplicationRedirect", "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", + "name": "User-Agent", + "in": "header", "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": { @@ -79053,7 +78083,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataQueueStats" + "type": "object" } } } @@ -79163,36 +78193,25 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/queueStats/list": { + "/api/noauth/qr/{secret}": { "get": { "tags": [ - "queue-stats-controller" + "qr-code-settings-controller" ], - "summary": "Get QueueStats By Ids (getQueueStatsByIds)", - "description": "Fetch the Queue stats objects based on the provided ids. ", - "operationId": "getQueueStatsByIds", + "summary": "Get User Token (getUserTokenByMobileSecret)", + "description": "Returns the token of the User based on the provided secret key.", + "operationId": "getUserTokenByMobileSecret", "parameters": [ { - "name": "queueStatsIds", - "in": "query", - "description": "A list of queue stats ids, separated by comma ','", + "name": "secret", + "in": "path", + "description": "A string value representing short-lived secret key", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -79202,10 +78221,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QueueStats" - } + "$ref": "#/components/schemas/JwtPair" } } } @@ -79315,34 +78331,88 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/queueStats/{queueStatsId}": { + "/api/queues": { "get": { "tags": [ - "queue-stats-controller" + "queue-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", + "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": "queueStatsId", - "in": "path", - "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", + "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": { @@ -79351,7 +78421,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QueueStats" + "$ref": "#/components/schemas/PageDataQueue" } } } @@ -79470,36 +78540,40 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/report": { + }, "post": { "tags": [ - "report-controller" + "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" + ] + } + } ], - "summary": "createReport", - "operationId": "createReport", "requestBody": { "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "info": { - "type": "string" - } - }, - "required": [ - "file", - "info" - ] + "$ref": "#/components/schemas/Queue" } } - } + }, + "required": true }, "responses": { "200": { @@ -79507,7 +78581,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Report" + "$ref": "#/components/schemas/Queue" } } } @@ -79628,30 +78702,32 @@ ] } }, - "/api/v2/report/request": { - "post": { + "/api/queues/name/{queueName}": { + "get": { "tags": [ - "report-controller" + "queue-controller" ], - "summary": "requestReport", - "operationId": "requestReport", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportRequest" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/Queue" } } } @@ -79668,7 +78744,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -79772,32 +78848,32 @@ ] } }, - "/api/v2/report/test": { - "post": { + "/api/queues/{queueId}": { + "get": { "tags": [ - "report-controller" + "queue-controller" ], - "summary": "Download test report (testReportAndDownload)", - "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "testReportAndDownload", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportRequest" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/Queue" } } } @@ -79814,7 +78890,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -79916,21 +78992,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/v2/report/{reportId}": { - "get": { + }, + "delete": { "tags": [ - "report-controller" + "queue-controller" ], - "summary": "Get Report (getReportById)", - "description": "Fetch the Report object based on the provided report Id. The platform uses Report to store generated reports information.Referencing non-existing Report Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getReportById", + "summary": "Delete Queue (deleteQueue)", + "description": "Deletes the Queue. \n\nAvailable for users with 'SYS_ADMIN' authority.", + "operationId": "deleteQueue", "parameters": [ { - "name": "reportId", + "name": "queueId", "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the queue id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -79939,14 +79013,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Report" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -80062,28 +79129,82 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/queueStats": { + "get": { "tags": [ - "report-controller" + "queue-stats-controller" ], - "summary": "Delete Report (deleteReport)", - "description": "Deletes the report. Referencing non-existing Report Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteReport", + "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": "getTenantQueueStats", "parameters": [ { - "name": "reportId", - "in": "path", - "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataQueueStats" + } + } + } }, "400": { "description": "Bad Request", @@ -80201,21 +79322,25 @@ ] } }, - "/api/v2/report/{reportId}/download": { + "/api/queueStats/list": { "get": { "tags": [ - "report-controller" + "queue-stats-controller" ], - "summary": "downloadReport", - "operationId": "downloadReport", + "summary": "Get QueueStats By Ids (getQueueStatsByIds)", + "description": "Fetch the Queue stats objects based on the provided ids. ", + "operationId": "getQueueStatsByIds", "parameters": [ { - "name": "reportId", - "in": "path", + "name": "queueStatsIds", + "in": "query", + "description": "A list of queue stats ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -80225,8 +79350,10 @@ "content": { "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueStats" + } } } } @@ -80347,24 +79474,22 @@ ] } }, - "/api/v2/reportInfos": { + "/api/queueStats/{queueStatsId}": { "get": { "tags": [ - "report-controller" + "queue-stats-controller" ], - "summary": "getReportInfosByIds", - "operationId": "getReportInfosByIds", + "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": "strReportIds", - "in": "query", - "description": "A list of report ids, separated by comma ','", + "name": "queueStatsId", + "in": "path", + "description": "A string value representing the queue stats id. For example, '687f294c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -80374,10 +79499,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReportInfo" - } + "$ref": "#/components/schemas/QueueStats" } } } @@ -80498,98 +79620,42 @@ ] } }, - "/api/v2/reportInfos/all": { - "get": { + "/api/v2/report": { + "post": { "tags": [ "report-controller" ], - "summary": "getReportInfos", - "operationId": "getReportInfos", - "parameters": [ - { - "name": "reportTemplateId", - "in": "query", - "description": "Report template id", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "userId", - "in": "query", - "description": "The user used for report generation.", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "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 report's name or customer 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" + "summary": "createReport", + "operationId": "createReport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "info": { + "type": "string" + } + }, + "required": [ + "file", + "info" + ] + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReportInfo" + "$ref": "#/components/schemas/Report" } } } @@ -80606,7 +79672,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -80710,69 +79776,30 @@ ] } }, - "/api/v2/reports": { - "get": { + "/api/v2/report/request": { + "post": { "tags": [ "report-controller" ], - "summary": "getReports", - "operationId": "getReports", - "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 report's name or customer title", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string" + "summary": "requestReport", + "operationId": "requestReport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportRequest" + } } }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReport" + "$ref": "#/components/schemas/Job" } } } @@ -80789,7 +79816,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -80893,19 +79920,19 @@ ] } }, - "/api/reportTemplate": { + "/api/v2/report/test": { "post": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Save Report Template (saveReportTemplate)", - "description": "Creates or Updates report template. Report Template extends Report Template Info object and adds 'configuration' - a JSON structure of report template configuration. See the 'Model' tab of the Response Class for more details. When creating report template, platform generates report template Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created report template id will be present in the response. Specify existing report template id to update the report template. Referencing non-existing report template Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Report Template entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveReportTemplate", + "summary": "Download test report (testReportAndDownload)", + "description": "Generate and download test report.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "testReportAndDownload", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReportTemplate" + "$ref": "#/components/schemas/ReportRequest" } } }, @@ -80917,7 +79944,8 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReportTemplate" + "type": "string", + "format": "binary" } } } @@ -81038,19 +80066,19 @@ ] } }, - "/api/reportTemplate/info/{reportTemplateId}": { + "/api/v2/report/{reportId}": { "get": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Get Report Template Info (getReportTemplateInfoById)", - "description": "Fetch the ReportTemplateInfo object based on the provided report template Id. Report Templates allows you to create reports according to the report template configuration. Report service uses report template configuration to generate report. See the 'Model' tab of the Response Class for more details. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getReportTemplateInfoById", + "summary": "Get Report (getReportById)", + "description": "Fetch the Report object based on the provided report Id. The platform uses Report to store generated reports information.Referencing non-existing Report Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportById", "parameters": [ { - "name": "reportTemplateId", + "name": "reportId", "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -81063,7 +80091,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReportTemplateInfo" + "$ref": "#/components/schemas/Report" } } } @@ -81182,21 +80210,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/reportTemplate/{reportTemplateId}": { - "get": { + }, + "delete": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Get Report Template (getReportTemplateById)", - "description": "Fetch the ReportTemplate object based on the provided report template Id. Report Template extends Report Template Info object and adds 'configuration' - a JSON structure of report template configuration. See the 'Model' tab of the Response Class for more details. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getReportTemplateById", + "summary": "Delete Report (deleteReport)", + "description": "Deletes the report. Referencing non-existing Report Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteReport", "parameters": [ { - "name": "reportTemplateId", + "name": "reportId", "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the report id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -81205,14 +80231,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportTemplate" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -81328,28 +80347,37 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/v2/report/{reportId}/download": { + "get": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Delete Report Template (deleteReportTemplate)", - "description": "Deletes the report template. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteReportTemplate", + "summary": "downloadReport", + "operationId": "downloadReport", "parameters": [ { - "name": "reportTemplateId", + "name": "reportId", "in": "path", - "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "400": { "description": "Bad Request", @@ -81467,111 +80495,25 @@ ] } }, - "/api/reportTemplateInfos/all": { + "/api/v2/reportInfos": { "get": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Get All Report Templates for current user (getAllReportTemplateInfos)", - "description": "Returns a page of report template info objects owned by the tenant or the customer of a current user. Report Templates allows you to create reports according to the report template configuration. Report service uses report template configuration to generate report. See the 'Model' tab of the Response Class for more details. 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllReportTemplateInfos", + "summary": "getReportInfosByIds", + "operationId": "getReportInfosByIds", "parameters": [ { - "name": "typeList", - "in": "query", - "description": "A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "REPORT", - "SUB_REPORT" - ] - } - } - }, - { - "name": "formatList", + "name": "strReportIds", "in": "query", - "description": "A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.", - "required": false, + "description": "A list of report ids, separated by comma ','", + "required": true, "schema": { "type": "array", "items": { - "type": "string", - "enum": [ - "PDF", - "CSV" - ] + "type": "string" } } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "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 report template name or 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", - "name", - "ownerName" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -81580,7 +80522,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataReportTemplateInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReportInfo" + } } } } @@ -81701,25 +80646,88 @@ ] } }, - "/api/reportTemplates": { + "/api/v2/reportInfos/all": { "get": { "tags": [ - "report-template-controller" + "report-controller" ], - "summary": "Get report templates by Report Template Ids (getReportTemplatesByIds)", - "description": "Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. \n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getReportTemplatesByIds", + "summary": "getReportInfos", + "operationId": "getReportInfos", "parameters": [ { - "name": "reportTemplateIds", + "name": "reportTemplateId", "in": "query", - "description": "A list of report template ids, separated by comma ','", + "description": "Report template id", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "The user used for report generation.", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "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 report's name or customer 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" } } ], @@ -81729,10 +80737,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReportTemplateInfo" - } + "$ref": "#/components/schemas/PageDataReportInfo" } } } @@ -81853,31 +80858,69 @@ ] } }, - "/api/role": { - "post": { + "/api/v2/reports": { + "get": { "tags": [ - "role-controller" + "report-controller" ], - "summary": "Create Or Update Role (saveRole)", - "description": "Creates or Updates the Role. When creating Role, platform generates Role Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Role id will be present in the response. Specify existing Role id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nRole Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller).\n\nExample of Generic Role with read-only permissions for any resource and all permissions for the 'DEVICE' and 'PROFILE' resources is listed below: \n\n```json\n{\n \"name\": \"Read-Only User\",\n \"type\": \"GENERIC\",\n \"permissions\": {\n \"ALL\": [\n \"READ\",\n \"RPC_CALL\",\n \"READ_CREDENTIALS\",\n \"READ_ATTRIBUTES\",\n \"READ_TELEMETRY\"\n ],\n \"DEVICE\": [\n \"ALL\"\n ]\n \"PROFILE\": [\n \"ALL\"\n ]\n },\n \"additionalInfo\": {\n \"description\": \"Read-only permissions for everything, Write permissions for devices and own profile.\"\n }\n}\n```\n\nExample of Group Role with read-only permissions. Note that the group role has no association with the resources. The type of the resource is taken from the entity group that this role is assigned to: \n\n```json\n{\n \"name\": \"Entity Group Read-only User\",\n \"type\": \"GROUP\",\n \"permissions\": [\n \"READ\",\n \"RPC_CALL\",\n \"READ_CREDENTIALS\",\n \"READ_ATTRIBUTES\",\n \"READ_TELEMETRY\"\n ],\n \"additionalInfo\": {\n \"description\": \"Read-only permissions.\"\n }\n}\n```\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "saveRole", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Role" - } + "summary": "getReports", + "operationId": "getReports", + "parameters": [ + { + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", + "required": true, + "schema": { + "type": "integer", + "format": "int32" } }, - "required": true - }, + { + "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 report's name or customer 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" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Role" + "$ref": "#/components/schemas/PageDataReport" } } } @@ -81894,7 +80937,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -81998,32 +81041,31 @@ ] } }, - "/api/role/{roleId}": { - "get": { + "/api/reportTemplate": { + "post": { "tags": [ - "role-controller" + "report-template-controller" ], - "summary": "Get Role by Id (getRoleById)", - "description": "Fetch the Role object based on the provided Role Id. Role Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller). Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getRoleById", - "parameters": [ - { - "name": "roleId", - "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Save Report Template (saveReportTemplate)", + "description": "Creates or Updates report template. Report Template extends Report Template Info object and adds 'configuration' - a JSON structure of report template configuration. See the 'Model' tab of the Response Class for more details. When creating report template, platform generates report template Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created report template id will be present in the response. Specify existing report template id to update the report template. Referencing non-existing report template Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Report Template entity. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveReportTemplate", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportTemplate" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Role" + "$ref": "#/components/schemas/ReportTemplate" } } } @@ -82040,7 +81082,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -82142,19 +81184,21 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/reportTemplate/info/{reportTemplateId}": { + "get": { "tags": [ - "role-controller" + "report-template-controller" ], - "summary": "Delete role (deleteRole)", - "description": "Deletes the role. Referencing non-existing role Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteRole", + "summary": "Get Report Template Info (getReportTemplateInfoById)", + "description": "Fetch the ReportTemplateInfo object based on the provided report template Id. Report Templates allows you to create reports according to the report template configuration. Report service uses report template configuration to generate report. See the 'Model' tab of the Response Class for more details. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportTemplateInfoById", "parameters": [ { - "name": "roleId", + "name": "reportTemplateId", "in": "path", - "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -82163,7 +81207,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReportTemplateInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -82281,84 +81332,23 @@ ] } }, - "/api/roles": { + "/api/reportTemplate/{reportTemplateId}": { "get": { "tags": [ - "role-controller" + "report-template-controller" ], - "summary": "Get Roles (getRoles)", - "description": "Returns a page of roles that are available for the current user. Role Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller).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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getRoles", + "summary": "Get Report Template (getReportTemplateById)", + "description": "Fetch the ReportTemplate object based on the provided report template Id. Report Template extends Report Template Info object and adds 'configuration' - a JSON structure of report template configuration. See the 'Model' tab of the Response Class for more details. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportTemplateById", "parameters": [ { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "reportTemplateId", + "in": "path", + "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "type", - "in": "query", - "description": "Type of the role", - "required": false, - "schema": { - "type": "string", - "enum": [ - "GENERIC", - "GROUP" - ] - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the role 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", - "description" - ] - } - }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } } ], "responses": { @@ -82367,7 +81357,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataRole" + "$ref": "#/components/schemas/ReportTemplate" } } } @@ -82486,43 +81476,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/roles/list": { - "get": { + }, + "delete": { "tags": [ - "role-controller" + "report-template-controller" ], - "summary": "Get Roles By Ids (getRolesByIds)", - "description": "Returns the list of rows based on their ids. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getRolesByIds", + "summary": "Delete Report Template (deleteReportTemplate)", + "description": "Deletes the report template. Referencing non-existing Report Template Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteReportTemplate", "parameters": [ { - "name": "roleIds", - "in": "query", - "description": "A list of role ids, separated by comma ','", + "name": "reportTemplateId", + "in": "path", + "description": "A string value representing the report template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Role" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -82640,43 +81615,120 @@ ] } }, - "/api/plugins/rpc/oneway/{deviceId}": { - "post": { + "/api/reportTemplateInfos/all": { + "get": { "tags": [ - "rpc-v-1-controller" + "report-template-controller" ], - "summary": "Send one-way RPC request (handleOneWayDeviceRPCRequestV1)", - "description": "Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "handleOneWayDeviceRPCRequestV1", + "summary": "Get All Report Templates for current user (getAllReportTemplateInfos)", + "description": "Returns a page of report template info objects owned by the tenant or the customer of a current user. Report Templates allows you to create reports according to the report template configuration. Report service uses report template configuration to generate report. See the 'Model' tab of the Response Class for more details. 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllReportTemplateInfos", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "typeList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the ReportTemplateType enumeration value.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "REPORT", + "SUB_REPORT" + ] + } + } + }, + { + "name": "formatList", + "in": "query", + "description": "A list of string values separated by comma ',' representing one of the TbReportFormat enumeration value.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PDF", + "CSV" + ] + } + } + }, + { + "name": "includeCustomers", + "in": "query", + "description": "Include customer or sub-customer entities", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "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 report template name or customer title.", + "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "description": "A JSON object representing the RPC request.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "ownerName" + ] } }, - "required": true - }, + { + "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" + "$ref": "#/components/schemas/PageDataReportTemplateInfo" } } } @@ -82693,7 +81745,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -82797,43 +81849,38 @@ ] } }, - "/api/plugins/rpc/twoway/{deviceId}": { - "post": { + "/api/reportTemplates": { + "get": { "tags": [ - "rpc-v-1-controller" + "report-template-controller" ], - "summary": "Send two-way RPC request (handleTwoWayDeviceRPCRequestV1)", - "description": "Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "handleTwoWayDeviceRPCRequestV1", + "summary": "Get report templates by Report Template Ids (getReportTemplatesByIds)", + "description": "Returns a list of ReportTemplateInfo objects based on the provided ids. Filters the list based on the user permissions. \n\nAvailable for users with 'TENANT_ADMIN' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getReportTemplatesByIds", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "reportTemplateIds", + "in": "query", + "description": "A list of report template ids, separated by comma ','", "required": true, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "A JSON object representing the RPC request.", - "content": { - "text/plain": { - "schema": { + "type": "array", + "items": { "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/ReportTemplateInfo" + } } } } @@ -82850,7 +81897,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -82954,31 +82001,19 @@ ] } }, - "/api/rpc/oneway/{deviceId}": { + "/api/role": { "post": { "tags": [ - "rpc-v-2-controller" - ], - "summary": "Send one-way RPC request (handleOneWayDeviceRPCRequestV2)", - "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": "handleOneWayDeviceRPCRequestV2", - "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" - } - } + "role-controller" ], + "summary": "Create Or Update Role (saveRole)", + "description": "Creates or Updates the Role. When creating Role, platform generates Role Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Role id will be present in the response. Specify existing Role id to update the permission. Referencing non-existing Group Permission Id will cause 'Not Found' error.\n\nRole Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller).\n\nExample of Generic Role with read-only permissions for any resource and all permissions for the 'DEVICE' and 'PROFILE' resources is listed below: \n\n```json\n{\n \"name\": \"Read-Only User\",\n \"type\": \"GENERIC\",\n \"permissions\": {\n \"ALL\": [\n \"READ\",\n \"RPC_CALL\",\n \"READ_CREDENTIALS\",\n \"READ_ATTRIBUTES\",\n \"READ_TELEMETRY\"\n ],\n \"DEVICE\": [\n \"ALL\"\n ]\n \"PROFILE\": [\n \"ALL\"\n ]\n },\n \"additionalInfo\": {\n \"description\": \"Read-only permissions for everything, Write permissions for devices and own profile.\"\n }\n}\n```\n\nExample of Group Role with read-only permissions. Note that the group role has no association with the resources. The type of the resource is taken from the entity group that this role is assigned to: \n\n```json\n{\n \"name\": \"Entity Group Read-only User\",\n \"type\": \"GROUP\",\n \"permissions\": [\n \"READ\",\n \"RPC_CALL\",\n \"READ_CREDENTIALS\",\n \"READ_ATTRIBUTES\",\n \"READ_TELEMETRY\"\n ],\n \"additionalInfo\": {\n \"description\": \"Read-only permissions.\"\n }\n}\n```\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "saveRole", "requestBody": { - "description": "A JSON object representing the RPC request.", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Role" } } }, @@ -82986,51 +82021,53 @@ }, "responses": { "200": { - "description": "Persistent RPC request was saved to the database or lightweight RPC request was sent to the device.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Role" } } } }, "400": { - "description": "Invalid structure of the request.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid request body", + "errorCode": 31, + "timestamp": 1609459200000 + } + } } } } }, "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.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } } } } @@ -83109,98 +82146,23 @@ ] } }, - "/api/rpc/persistent/device/{deviceId}": { + "/api/role/{roleId}": { "get": { "tags": [ - "rpc-v-2-controller" + "role-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", + "summary": "Get Role by Id (getRoleById)", + "description": "Fetch the Role object based on the provided Role Id. Role Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller). Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getRoleById", "parameters": [ { - "name": "deviceId", + "name": "roleId", "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", + "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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": { @@ -83209,7 +82171,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Role" } } } @@ -83328,21 +82290,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/rpc/persistent/{rpcId}": { - "get": { + }, + "delete": { "tags": [ - "rpc-v-2-controller" + "role-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", + "summary": "Delete role (deleteRole)", + "description": "Deletes the role. Referencing non-existing role Id will cause an error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteRole", "parameters": [ { - "name": "rpcId", + "name": "roleId", "in": "path", - "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the role id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -83351,14 +82311,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Rpc" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -83474,28 +82427,98 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/roles": { + "get": { "tags": [ - "rpc-v-2-controller" + "role-controller" ], - "summary": "Delete persistent RPC", - "description": "Deletes the persistent RPC request.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteRpc", + "summary": "Get Roles (getRoles)", + "description": "Returns a page of roles that are available for the current user. Role Contains a set of permissions. Role has two types. Generic Role may be assigned to the user group and will provide permissions for all entities of a certain type. Group Role may be assigned to both user and entity group and will provides permissions only for the entities that belong to specified entity group. The assignment of the Role to the User Group is done using [Group Permission Controller](/swagger-ui.html#/group-permission-controller).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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getRoles", "parameters": [ { - "name": "rpcId", - "in": "path", - "description": "A string value representing the rpc id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, + "schema": { + "type": "string", + "minimum": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "type", + "in": "query", + "description": "Type of the role", + "required": false, + "schema": { + "type": "string", + "enum": [ + "GENERIC", + "GROUP" + ] + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the role 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", + "description" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } } ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataRole" + } + } + } }, "400": { "description": "Bad Request", @@ -83613,83 +82636,80 @@ ] } }, - "/api/rpc/twoway/{deviceId}": { - "post": { + "/api/roles/list": { + "get": { "tags": [ - "rpc-v-2-controller" + "role-controller" ], - "summary": "Send two-way RPC request (handleTwoWayDeviceRPCRequestV2)", - "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": "handleTwoWayDeviceRPCRequestV2", + "summary": "Get Roles By Ids (getRolesByIds)", + "description": "Returns the list of rows based on their ids. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getRolesByIds", "parameters": [ { - "name": "deviceId", - "in": "path", - "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "roleIds", + "in": "query", + "description": "A list of role ids, separated by comma ','", "required": true, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "A JSON object representing the RPC request.", - "content": { - "text/plain": { - "schema": { + "type": "array", + "items": { "type": "string" } } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "Persistent RPC request was saved to the database or lightweight RPC response received.", + "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/Role" + } } } } }, "400": { - "description": "Invalid structure of the request.", + "description": "Bad Request", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid UUID string: 123", + "errorCode": 31, + "timestamp": 1609459200000 + } + } } } } }, "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.", + "description": "Unauthorized", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } } } } @@ -83768,39 +82788,43 @@ ] } }, - "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + "/api/plugins/rpc/oneway/{deviceId}": { "post": { "tags": [ - "rule-chain-controller" + "rpc-v-1-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", + "summary": "Send one-way RPC request (handleOneWayDeviceRPCRequestV1)", + "description": "Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "handleOneWayDeviceRPCRequestV1", "parameters": [ { - "name": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "ruleChainId", + "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": { + "description": "A JSON object representing the RPC request.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "type": "string" } } } @@ -83919,39 +82943,45 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/plugins/rpc/twoway/{deviceId}": { + "post": { "tags": [ - "rule-chain-controller" + "rpc-v-1-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", + "summary": "Send two-way RPC request (handleTwoWayDeviceRPCRequestV1)", + "description": "Deprecated. See 'Rpc V 2 Controller' instead.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "handleTwoWayDeviceRPCRequestV1", "parameters": [ { - "name": "edgeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "ruleChainId", + "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": { + "description": "A JSON object representing the RPC request.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "type": "string" } } } @@ -83968,7 +82998,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -84072,130 +83102,83 @@ ] } }, - "/api/edge/{edgeId}/ruleChains": { - "get": { + "/api/rpc/oneway/{deviceId}": { + "post": { "tags": [ - "rule-chain-controller" + "rpc-v-2-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", + "summary": "Send one-way RPC request (handleOneWayDeviceRPCRequestV2)", + "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": "handleOneWayDeviceRPCRequestV2", "parameters": [ { - "name": "edgeId", + "name": "deviceId", "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", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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" - ] - } } ], + "requestBody": { + "description": "A JSON object representing the RPC request.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "OK", + "description": "Persistent RPC request was saved to the database or lightweight RPC request was sent to the device.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataRuleChain" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid UUID string: 123", - "errorCode": 31, - "timestamp": 1609459200000 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to send the RPC request. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } + "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" } } } @@ -84274,31 +83257,107 @@ ] } }, - "/api/ruleChain": { - "post": { + "/api/rpc/persistent/device/{deviceId}": { + "get": { "tags": [ - "rule-chain-controller" + "rpc-v-2-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" - } + "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" } }, - "required": true - }, + { + "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": { - "$ref": "#/components/schemas/RuleChain" + "type": "string" } } } @@ -84315,7 +83374,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -84419,24 +83478,32 @@ ] } }, - "/api/ruleChain/autoAssignToEdgeRuleChains": { + "/api/rpc/persistent/{rpcId}": { "get": { "tags": [ - "rule-chain-controller" + "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" + } + } ], - "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" - } + "$ref": "#/components/schemas/Rpc" } } } @@ -84555,36 +83622,28 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/device/default": { - "post": { + }, + "delete": { "tags": [ - "rule-chain-controller" + "rpc-v-2-controller" ], - "summary": "Create Default Rule Chain (setDeviceDefaultRuleChain)", - "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": "setDeviceDefaultRuleChain", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DefaultRuleChainCreateRequest" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleChain" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -84598,7 +83657,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -84702,31 +83761,31 @@ ] } }, - "/api/ruleChain/metadata": { + "/api/rpc/twoway/{deviceId}": { "post": { "tags": [ - "rule-chain-controller" + "rpc-v-2-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", + "summary": "Send two-way RPC request (handleTwoWayDeviceRPCRequestV2)", + "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": "handleTwoWayDeviceRPCRequestV2", "parameters": [ { - "name": "updateRelated", - "in": "query", - "description": "Update related rule nodes.", - "required": false, + "name": "deviceId", + "in": "path", + "description": "A string value representing the device id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean", - "default": true + "type": "string" } } ], "requestBody": { + "description": "A JSON object representing the RPC request.", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "type": "string" } } }, @@ -84734,53 +83793,51 @@ }, "responses": { "200": { - "description": "OK", + "description": "Persistent RPC request was saved to the database or lightweight RPC response received.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainMetaData" + "type": "string" } } } }, "400": { - "description": "Bad Request", + "description": "Invalid structure of the request.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid request body", - "errorCode": 31, - "timestamp": 1609459200000 - } - } + "type": "string" } } } }, "401": { - "description": "Unauthorized", + "description": "User is not authorized to send the RPC request. Most likely, User belongs to different Customer or Tenant.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } + "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" } } } @@ -84859,21 +83916,39 @@ ] } }, - "/api/ruleChain/tbelEnabled": { - "get": { + "/api/edge/{edgeId}/ruleChain/{ruleChainId}": { + "post": { "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", + "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": { - "type": "boolean" + "$ref": "#/components/schemas/RuleChain" } } } @@ -84890,7 +83965,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -84992,45 +84067,39 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/testScript": { - "post": { + }, + "delete": { "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": "testRuleChainScript", + "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": "scriptLang", - "in": "query", - "description": "Script language: JS or TBEL", - "required": false, + "name": "edgeId", + "in": "path", + "required": true, "schema": { - "$ref": "#/components/schemas/ScriptLanguage" + "type": "string" + } + }, + { + "name": "ruleChainId", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], - "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" + "$ref": "#/components/schemas/RuleChain" } } } @@ -85047,7 +84116,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -85151,23 +84220,79 @@ ] } }, - "/api/ruleChain/{ruleChainId}": { + "/api/edge/{edgeId}/ruleChains": { "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", + "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": "ruleChainId", + "name": "edgeId", "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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": { @@ -85176,7 +84301,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChain" + "$ref": "#/components/schemas/PageDataRuleChain" } } } @@ -85295,28 +84420,174 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChain": { + "post": { "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" + "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" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid request body", + "errorCode": 31, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "status": 403, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "status": 404, + "message": "Requested item wasn't found!", + "errorCode": 32, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "status": 429, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "timestamp": 1609459200000 + } + } + } + } } } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/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" + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChain" + } + } + } + } }, "400": { "description": "Bad Request", @@ -85434,25 +84705,24 @@ ] } }, - "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { + "/api/ruleChain/device/default": { "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" + "summary": "Create Default Rule Chain (setDeviceDefaultRuleChain)", + "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": "setDeviceDefaultRuleChain", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultRuleChainCreateRequest" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -85578,32 +84848,45 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/ruleChain/metadata": { + "post": { "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", + "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": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "updateRelated", + "in": "query", + "description": "Update related rule nodes.", + "required": false, "schema": { - "type": "string" + "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/RuleChain" + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -85620,7 +84903,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -85724,32 +85007,21 @@ ] } }, - "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { - "post": { + "/api/ruleChain/tbelEnabled": { + "get": { "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" - } - } - ], + "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": { - "$ref": "#/components/schemas/RuleChain" + "type": "boolean" } } } @@ -85766,7 +85038,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -85870,32 +85142,43 @@ ] } }, - "/api/ruleChain/{ruleChainId}/metadata": { - "get": { + "/api/ruleChain/testScript": { + "post": { "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", + "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": "testRuleChainScript", "parameters": [ { - "name": "ruleChainId", - "in": "path", - "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, + "name": "scriptLang", + "in": "query", + "description": "Script language: JS or TBEL", + "required": false, "schema": { - "type": "string" + "$ref": "#/components/schemas/ScriptLanguage" } } ], + "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/RuleChainMetaData" + "$ref": "#/components/schemas/JsonNode" } } } @@ -85912,7 +85195,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -86016,14 +85299,14 @@ ] } }, - "/api/ruleChain/{ruleChainId}/output/labels": { + "/api/ruleChain/{ruleChainId}": { "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", + "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", @@ -86041,11 +85324,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true + "$ref": "#/components/schemas/RuleChain" } } } @@ -86164,16 +85443,14 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChain/{ruleChainId}/output/labels/usage": { - "get": { + }, + "delete": { "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", + "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", @@ -86187,17 +85464,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -86315,14 +85582,14 @@ ] } }, - "/api/ruleChain/{ruleChainId}/root": { + "/api/ruleChain/{ruleChainId}/autoAssignToEdge": { "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", + "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", @@ -86459,85 +85726,23 @@ "ApiKeyForm": [] } ] - } - }, - "/api/ruleChains": { - "get": { + }, + "delete": { "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": "getRuleChains", + "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": "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", + "name": "ruleChainId", + "in": "path", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "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": { @@ -86546,7 +85751,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataRuleChain" + "$ref": "#/components/schemas/RuleChain" } } } @@ -86667,23 +85872,22 @@ ] } }, - "/api/ruleChains/export": { - "get": { + "/api/ruleChain/{ruleChainId}/edgeTemplateRoot": { + "post": { "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", + "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": "limit", - "in": "query", - "description": "A limit of rule chains to export.", + "name": "ruleChainId", + "in": "path", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "integer", - "format": "int32" + "type": "string" } } ], @@ -86693,7 +85897,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RuleChainData" + "$ref": "#/components/schemas/RuleChain" } } } @@ -86710,7 +85914,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -86814,46 +86018,32 @@ ] } }, - "/api/ruleChains/import": { - "post": { + "/api/ruleChain/{ruleChainId}/metadata": { + "get": { "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", + "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": "overwrite", - "in": "query", - "description": "Enables overwrite for existing rule chains with the same name.", - "required": false, + "name": "ruleChainId", + "in": "path", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } } ], - "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" - } + "$ref": "#/components/schemas/RuleChainMetaData" } } } @@ -86870,7 +86060,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -86974,25 +86164,22 @@ ] } }, - "/api/ruleChains/list": { + "/api/ruleChain/{ruleChainId}/output/labels": { "get": { "tags": [ "rule-chain-controller" ], - "summary": "Get Rule Chains By Ids (getRuleChainsByIds)", - "description": "Requested rule chains must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getRuleChainsByIds", + "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": "ruleChainIds", - "in": "query", - "description": "A list of rule chain ids, separated by comma ','", + "name": "ruleChainId", + "in": "path", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -87004,8 +86191,9 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/RuleChain" - } + "type": "string" + }, + "uniqueItems": true } } } @@ -87126,19 +86314,19 @@ ] } }, - "/api/ruleNode/{ruleNodeId}/debugIn": { + "/api/ruleChain/{ruleChainId}/output/labels/usage": { "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", + "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": "ruleNodeId", + "name": "ruleChainId", "in": "path", - "description": "A string value representing the rule node id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the rule chain id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -87151,7 +86339,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JsonNode" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainOutputLabelsUsage" + } } } } @@ -87272,32 +86463,32 @@ ] } }, - "/api/rule-engine/": { + "/api/ruleChain/{ruleChainId}/root": { "post": { "tags": [ - "rule-engine-controller" + "rule-chain-controller" ], - "summary": "Push user message to the rule engine (handleRuleEngineRequestForUser)", - "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": "handleRuleEngineRequestForUser", - "requestBody": { - "description": "A JSON object representing the message.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } + "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" } - }, - "required": true - }, + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RuleChain" } } } @@ -87418,52 +86609,92 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}": { - "post": { + "/api/ruleChains": { + "get": { "tags": [ - "rule-engine-controller" + "rule-chain-controller" ], - "summary": "Push entity message to the rule engine (handleRuleEngineRequestForEntity)", - "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": "handleRuleEngineRequestForEntity", + "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": "getRuleChains", "parameters": [ { - "name": "entityType", - "in": "path", - "description": "A string value representing the entity type. For example, 'DEVICE'", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { - "name": "entityId", - "in": "path", - "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "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" } - } - ], - "requestBody": { - "description": "A JSON object representing the message.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "createdTime", + "name", + "root" + ] } }, - "required": true - }, + { + "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" + "$ref": "#/components/schemas/PageDataRuleChain" } } } @@ -87480,7 +86711,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -87584,46 +86815,19 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { - "post": { + "/api/ruleChains/export": { + "get": { "tags": [ - "rule-engine-controller" + "rule-chain-controller" ], - "summary": "Push entity message with timeout and specified queue to the rule engine (handleRuleEngineRequestForEntityWithQueueAndTimeout)", - "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": "handleRuleEngineRequestForEntityWithQueueAndTimeout", + "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": "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", + "name": "limit", + "in": "query", + "description": "A limit of rule chains to export.", "required": true, "schema": { "type": "integer", @@ -87631,24 +86835,13 @@ } } ], - "requestBody": { - "description": "A JSON object representing the message.", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RuleChainData" } } } @@ -87665,7 +86858,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -87769,50 +86962,31 @@ ] } }, - "/api/rule-engine/{entityType}/{entityId}/{timeout}": { + "/api/ruleChains/import": { "post": { "tags": [ - "rule-engine-controller" + "rule-chain-controller" ], - "summary": "Push entity message with timeout to the rule engine (handleRuleEngineRequestForEntityWithTimeout)", - "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": "handleRuleEngineRequestForEntityWithTimeout", + "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": "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, + "name": "overwrite", + "in": "query", + "description": "Enables overwrite for existing rule chains with the same name.", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "boolean", + "default": false } } ], "requestBody": { - "description": "A JSON object representing the message.", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/RuleChainData" } } }, @@ -87824,7 +86998,10 @@ "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleChainImportResult" + } } } } @@ -87945,22 +87122,25 @@ ] } }, - "/api/edge/{edgeId}/allSchedulerEvents": { + "/api/ruleChains/list": { "get": { "tags": [ - "scheduler-event-controller" + "rule-chain-controller" ], - "summary": "Get All Edge Scheduler Events (getAllEdgeSchedulerEvents)", - "description": "Fetch the list of Scheduler Event Info objects based on the provided Edge entity. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllEdgeSchedulerEvents", + "summary": "Get Rule Chains By Ids (getRuleChainsByIds)", + "description": "Requested rule chains must be owned by tenant which is performing the request. \n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getRuleChainsByIds", "parameters": [ { - "name": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "ruleChainIds", + "in": "query", + "description": "A list of rule chain ids, separated by comma ','", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } ], @@ -87972,7 +87152,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/RuleChain" } } } @@ -88094,28 +87274,19 @@ ] } }, - "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { - "post": { + "/api/ruleNode/{ruleNodeId}/debugIn": { + "get": { "tags": [ - "scheduler-event-controller" + "rule-chain-controller" ], - "summary": "Assign scheduler event to edge (assignSchedulerEventToEdge)", - "description": "Creates assignment of an existing scheduler event 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 scheduler event (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once scheduler event will be delivered to edge service, it is going to be available for usage on remote edge instance. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "assignSchedulerEventToEdge", + "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": "edgeId", - "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "schedulerEventId", + "name": "ruleNodeId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the rule node id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -88128,7 +87299,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "$ref": "#/components/schemas/JsonNode" } } } @@ -88145,7 +87316,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -88247,41 +87418,34 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/rule-engine/": { + "post": { "tags": [ - "scheduler-event-controller" + "rule-engine-controller" ], - "summary": "Unassign scheduler event from edge (unassignSchedulerEventFromEdge)", - "description": "Clears assignment of the scheduler event 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 group (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 group and entities inside this group locally.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "unassignSchedulerEventFromEdge", - "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" + "summary": "Push user message to the rule engine (handleRuleEngineRequestForUser)", + "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": "handleRuleEngineRequestForUser", + "requestBody": { + "description": "A JSON object representing the message.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } } }, - { - "name": "schedulerEventId", - "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventInfo" + "type": "string" } } } @@ -88298,7 +87462,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -88402,83 +87566,52 @@ ] } }, - "/api/edge/{edgeId}/schedulerEvents": { - "get": { + "/api/rule-engine/{entityType}/{entityId}": { + "post": { "tags": [ - "scheduler-event-controller" + "rule-engine-controller" ], - "summary": "Get Edge Scheduler Events (getEdgeSchedulerEvents)", - "description": "Returns a page of Scheduler Events Info objects based on the provided Edge entity. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getEdgeSchedulerEvents", + "summary": "Push entity message to the rule engine (handleRuleEngineRequestForEntity)", + "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": "handleRuleEngineRequestForEntity", "parameters": [ { - "name": "edgeId", + "name": "entityType", "in": "path", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { "type": "string" } }, { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, - "schema": { - "type": "string", - "minimum": 1 - } - }, - { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'startsWith' filter based on the scheduler event 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", - "enum": [ - "ASC", - "DESC" - ] - } } ], + "requestBody": { + "description": "A JSON object representing the message.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSchedulerEventInfo" + "type": "string" } } } @@ -88495,7 +87628,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -88599,103 +87732,71 @@ ] } }, - "/api/scheduledReports": { - "get": { + "/api/rule-engine/{entityType}/{entityId}/{queueName}/{timeout}": { + "post": { "tags": [ - "scheduler-event-controller" + "rule-engine-controller" ], - "summary": "Get Scheduled Report Events (getScheduledReportEvents)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getScheduledReportEvents", + "summary": "Push entity message with timeout and specified queue to the rule engine (handleRuleEngineRequestForEntityWithQueueAndTimeout)", + "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": "handleRuleEngineRequestForEntityWithQueueAndTimeout", "parameters": [ { - "name": "reportTemplateId", - "in": "query", - "description": "Report template id", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "userId", - "in": "query", - "description": "The user used for report generation.", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "includeCustomers", - "in": "query", - "description": "Include customer or sub-customer entities", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "Maximum amount of entities in a one page", + "name": "entityType", + "in": "path", + "description": "A string value representing the entity type. For example, 'DEVICE'", "required": true, "schema": { - "type": "string", - "minimum": 1 + "type": "string" } }, { - "name": "page", - "in": "query", - "description": "Sequence number of page starting from 0", + "name": "entityId", + "in": "path", + "description": "A string value representing the entity id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "string", - "minimum": 0 - } - }, - { - "name": "textSearch", - "in": "query", - "description": "The case insensitive 'substring' filter based on the scheduler event name or customer title.", - "required": false, "schema": { "type": "string" } }, { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, + "name": "queueName", + "in": "path", + "description": "Queue name to process the request in the rule engine", + "required": true, "schema": { "type": "string" } }, { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, + "name": "timeout", + "in": "path", + "description": "Timeout to process the request in milliseconds", + "required": true, "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "type": "integer", + "format": "int32" } } ], + "requestBody": { + "description": "A JSON object representing the message.", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataScheduledReportInfo" + "type": "string" } } } @@ -88712,7 +87813,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -88816,19 +87917,50 @@ ] } }, - "/api/schedulerEvent": { + "/api/rule-engine/{entityType}/{entityId}/{timeout}": { "post": { "tags": [ - "scheduler-event-controller" + "rule-engine-controller" + ], + "summary": "Push entity message with timeout to the rule engine (handleRuleEngineRequestForEntityWithTimeout)", + "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": "handleRuleEngineRequestForEntityWithTimeout", + "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" + } + } ], - "summary": "Save Scheduler Event (saveSchedulerEvent)", - "description": "Creates or Updates scheduler event. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. When creating scheduler event, platform generates scheduler event Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created scheduler event id will be present in the response. Specify existing scheduler event id to update the scheduler event. Referencing non-existing scheduler event Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Scheduler Event entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "saveSchedulerEvent", "requestBody": { + "description": "A JSON object representing the message.", "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "type": "string" } } }, @@ -88840,7 +87972,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "type": "string" } } } @@ -88961,19 +88093,19 @@ ] } }, - "/api/schedulerEvent/info/{schedulerEventId}": { + "/api/edge/{edgeId}/allSchedulerEvents": { "get": { "tags": [ "scheduler-event-controller" ], - "summary": "Get Scheduler Event With Customer Info (getSchedulerEventInfoById)", - "description": "Fetch the SchedulerEventWithCustomerInfo object based on the provided scheduler event Id. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSchedulerEventInfoById", + "summary": "Get All Edge Scheduler Events (getAllEdgeSchedulerEvents)", + "description": "Fetch the list of Scheduler Event Info objects based on the provided Edge entity. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllEdgeSchedulerEvents", "parameters": [ { - "name": "schedulerEventId", + "name": "edgeId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -88986,7 +88118,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } } } } @@ -89107,15 +88242,24 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}": { - "get": { + "/api/edge/{edgeId}/schedulerEvent/{schedulerEventId}": { + "post": { "tags": [ "scheduler-event-controller" ], - "summary": "Get Scheduler Event (getSchedulerEventById)", - "description": "Fetch the SchedulerEvent object based on the provided scheduler event Id. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSchedulerEventById", + "summary": "Assign scheduler event to edge (assignSchedulerEventToEdge)", + "description": "Creates assignment of an existing scheduler event 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 scheduler event (Edge will receive this instantly, if it's currently connected, or once it's going to be connected to platform). Third, once scheduler event will be delivered to edge service, it is going to be available for usage on remote edge instance. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "assignSchedulerEventToEdge", "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": "schedulerEventId", "in": "path", @@ -89132,7 +88276,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "$ref": "#/components/schemas/SchedulerEventInfo" } } } @@ -89149,7 +88293,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -89256,10 +88400,19 @@ "tags": [ "scheduler-event-controller" ], - "summary": "Delete Scheduler Event (deleteSchedulerEvent)", - "description": "Deletes the scheduler event. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "deleteSchedulerEvent", + "summary": "Unassign scheduler event from edge (unassignSchedulerEventFromEdge)", + "description": "Clears assignment of the scheduler event 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 group (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 group and entities inside this group locally.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority. Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", + "operationId": "unassignSchedulerEventFromEdge", "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": "schedulerEventId", "in": "path", @@ -89272,7 +88425,14 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -89390,31 +88550,73 @@ ] } }, - "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { - "put": { + "/api/edge/{edgeId}/schedulerEvents": { + "get": { "tags": [ "scheduler-event-controller" ], - "summary": "Enable or disable Scheduler Event (enableSchedulerEvent)", - "description": "Updates scheduler event with enabled = true/false. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", - "operationId": "enableSchedulerEvent", + "summary": "Get Edge Scheduler Events (getEdgeSchedulerEvents)", + "description": "Returns a page of Scheduler Events Info objects based on the provided Edge entity. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. 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. Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getEdgeSchedulerEvents", "parameters": [ { - "name": "schedulerEventId", + "name": "edgeId", "in": "path", - "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" } }, { - "name": "enabledValue", - "in": "path", - "description": "Enabled or disabled scheduler", + "name": "pageSize", + "in": "query", + "description": "Maximum amount of entities in a one page", "required": true, "schema": { - "type": "boolean" + "type": "string", + "minimum": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'startsWith' filter based on the scheduler event 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", + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -89424,7 +88626,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SchedulerEvent" + "$ref": "#/components/schemas/PageDataSchedulerEventInfo" } } } @@ -89545,79 +88747,93 @@ ] } }, - "/api/schedulerEvents": { + "/api/scheduledReports": { "get": { "tags": [ "scheduler-event-controller" ], - "summary": "Get scheduler events (getSchedulerEvents)", - "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \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\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSchedulerEvents", + "summary": "Get Scheduled Report Events (getScheduledReportEvents)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getScheduledReportEvents", "parameters": [ { - "name": "pageSize", + "name": "reportTemplateId", "in": "query", - "description": "Maximum amount of entities in a one page", - "required": true, + "description": "Report template id", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "format": "uuid" } }, { - "name": "page", + "name": "userId", "in": "query", - "description": "Sequence number of page starting from 0", - "required": true, + "description": "The user used for report generation.", + "required": false, "schema": { - "type": "integer", - "format": "int32" + "type": "string", + "format": "uuid" } }, { - "name": "textSearch", + "name": "includeCustomers", "in": "query", - "description": "Case-insensitive 'substring' filter based on event's name, type, or customer's name", + "description": "Include customer or sub-customer entities", "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "sortProperty", + "name": "pageSize", "in": "query", - "description": "Property of entity to sort by", - "required": false, + "description": "Maximum amount of entities in a one page", + "required": true, "schema": { - "type": "string" + "type": "string", + "minimum": 1 } }, { - "name": "sortOrder", + "name": "page", "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "description": "Sequence number of page starting from 0", + "required": true, + "schema": { + "type": "string", + "minimum": 0 + } + }, + { + "name": "textSearch", + "in": "query", + "description": "The case insensitive 'substring' filter based on the scheduler event name or customer title.", "required": false, "schema": { "type": "string" } }, { - "name": "type", + "name": "sortProperty", "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", + "description": "Property of entity to sort by", "required": false, "schema": { "type": "string" } }, { - "name": "edgeId", + "name": "sortOrder", "in": "query", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "required": false, "schema": { "type": "string", - "format": "uuid" + "enum": [ + "ASC", + "DESC" + ] } } ], @@ -89627,7 +88843,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSchedulerEventWithCustomerInfo" + "$ref": "#/components/schemas/PageDataScheduledReportInfo" } } } @@ -89748,35 +88964,31 @@ ] } }, - "/api/schedulerEvents/all": { - "get": { + "/api/schedulerEvent": { + "post": { "tags": [ "scheduler-event-controller" ], - "summary": "Get all scheduler events (getAllSchedulerEvents)", - "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getAllSchedulerEvents", - "parameters": [ - { - "name": "type", - "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", - "required": false, - "schema": { - "type": "string" + "summary": "Save Scheduler Event (saveSchedulerEvent)", + "description": "Creates or Updates scheduler event. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. When creating scheduler event, platform generates scheduler event Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created scheduler event id will be present in the response. Specify existing scheduler event id to update the scheduler event. Referencing non-existing scheduler event Id will cause 'Not Found' error. Remove 'id', 'tenantId' and optionally 'customerId' from the request body example (below) to create new Scheduler Event entity. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "saveSchedulerEvent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SchedulerEvent" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -89793,7 +89005,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -89897,25 +89109,22 @@ ] } }, - "/api/schedulerEvents/list": { + "/api/schedulerEvent/info/{schedulerEventId}": { "get": { "tags": [ "scheduler-event-controller" ], - "summary": "Get Scheduler Events By Ids (getSchedulerEventsByIds)", - "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSchedulerEventsByIds", + "summary": "Get Scheduler Event With Customer Info (getSchedulerEventInfoById)", + "description": "Fetch the SchedulerEventWithCustomerInfo object based on the provided scheduler event Id. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getSchedulerEventInfoById", "parameters": [ { - "name": "schedulerEventIds", - "in": "query", - "description": "A list of scheduler event ids, separated by comma ','", + "name": "schedulerEventId", + "in": "path", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" } } ], @@ -89925,10 +89134,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventInfo" - } + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" } } } @@ -90049,59 +89255,20 @@ ] } }, - "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { + "/api/schedulerEvent/{schedulerEventId}": { "get": { "tags": [ "scheduler-event-controller" ], - "summary": "Get scheduler events (getSchedulerEventsByRange)", - "description": "Retrieves scheduler events filtering by event run time. Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \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\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSchedulerEventsByRange", + "summary": "Get Scheduler Event (getSchedulerEventById)", + "description": "Fetch the SchedulerEvent object based on the provided scheduler event Id. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getSchedulerEventById", "parameters": [ { - "name": "startTime", - "in": "path", - "description": "Start time filter in milliseconds for scheduler event run time", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "endTime", + "name": "schedulerEventId", "in": "path", - "description": "End time filter in milliseconds for scheduler event run time", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "type", - "in": "query", - "description": "A string value representing the scheduler type. For example, 'generateReport'", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "edgeId", - "in": "query", - "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": false, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "textSearch", - "in": "query", - "description": "Case-insensitive 'substring' filter based on event's name, type, or customer's name", - "required": false, "schema": { "type": "string" } @@ -90113,10 +89280,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" - } + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -90235,20 +89399,19 @@ "ApiKeyForm": [] } ] - } - }, - "/api/secret": { - "get": { + }, + "delete": { "tags": [ - "secret-controller" + "scheduler-event-controller" ], - "summary": "Get Secret info by name (getSecretInfoByName)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getSecretInfoByName", + "summary": "Delete Scheduler Event (deleteSchedulerEvent)", + "description": "Deletes the scheduler event. Referencing non-existing Scheduler Event Id will cause 'Not Found' error.\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", + "operationId": "deleteSchedulerEvent", "parameters": [ { - "name": "name", - "in": "query", + "name": "schedulerEventId", + "in": "path", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", "required": true, "schema": { "type": "string" @@ -90257,14 +89420,7 @@ ], "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SecretInfo" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -90380,31 +89536,43 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/schedulerEvent/{schedulerEventId}/enabled/{enabledValue}": { + "put": { "tags": [ - "secret-controller" + "scheduler-event-controller" ], - "summary": "Save or Update Secret (saveSecret)", - "description": "Create or update the Secret. When creating secret, platform generates Secret Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Secret Id will be present in the response. Specify existing Secret Id to update the secret. Secret name is not updatable, only value could be changed. Referencing non-existing Secret Id will cause 'Not Found' error.\n\nSecret name is unique in the scope of tenant.", - "operationId": "saveSecret", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Secret" - } + "summary": "Enable or disable Scheduler Event (enableSchedulerEvent)", + "description": "Updates scheduler event with enabled = true/false. Scheduler Event extends Scheduler Event Info object and adds 'configuration' - a JSON structure of scheduler event configuration. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.", + "operationId": "enableSchedulerEvent", + "parameters": [ + { + "name": "schedulerEventId", + "in": "path", + "description": "A string value representing the scheduler id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "enabledValue", + "in": "path", + "description": "Enabled or disabled scheduler", + "required": true, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "$ref": "#/components/schemas/SchedulerEvent" } } } @@ -90421,7 +89589,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -90525,24 +89693,89 @@ ] } }, - "/api/secret/names": { + "/api/schedulerEvents": { "get": { "tags": [ - "secret-controller" + "scheduler-event-controller" + ], + "summary": "Get scheduler events (getSchedulerEvents)", + "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \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\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getSchedulerEvents", + "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 event's name, type, or customer'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": "type", + "in": "query", + "description": "A string value representing the scheduler type. For example, 'generateReport'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "edgeId", + "in": "query", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Get Tenant Secret names (getSecretNames)", - "description": "Returns a page of secret names 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": "getSecretNames", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "string" - } + "$ref": "#/components/schemas/PageDataSchedulerEventWithCustomerInfo" } } } @@ -90663,22 +89896,22 @@ ] } }, - "/api/secret/{id}": { - "delete": { + "/api/schedulerEvents/all": { + "get": { "tags": [ - "secret-controller" + "scheduler-event-controller" ], - "summary": "Delete secret by ID (deleteSecret)", - "description": "Deletes the secret. Referencing non-existing Secret Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "deleteSecret", + "summary": "Get all scheduler events (getAllSchedulerEvents)", + "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getAllSchedulerEvents", "parameters": [ { - "name": "id", - "in": "path", - "required": true, + "name": "type", + "in": "query", + "description": "A string value representing the scheduler type. For example, 'generateReport'", + "required": false, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -90688,7 +89921,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TbSecretDeleteResult" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } } } } @@ -90809,43 +90045,38 @@ ] } }, - "/api/secret/{id}/description": { - "put": { + "/api/schedulerEvents/list": { + "get": { "tags": [ - "secret-controller" + "scheduler-event-controller" ], - "summary": "Update Secret Description", - "description": "Updates the description of the existing Secret by secretId. Only the description can be updated. Referencing a non-existing Secret Id will cause a 'Not Found' error.", - "operationId": "updateSecretDescription", + "summary": "Get Scheduler Events By Ids (getSchedulerEventsByIds)", + "description": "Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Events allows you to schedule various types of events with flexible schedule configuration. Scheduler fires configured scheduler events according to their schedule. See the 'Model' tab of the Response Class for more details. \n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getSchedulerEventsByIds", "parameters": [ { - "name": "id", - "in": "path", - "description": "Unique identifier of the Secret to update", + "name": "schedulerEventIds", + "in": "query", + "description": "A list of scheduler event ids, separated by comma ','", "required": true, "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New description for the Secret" + "type": "array", + "items": { + "type": "string" } } } - }, + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventInfo" + } } } } @@ -90966,23 +90197,62 @@ ] } }, - "/api/secret/{id}/info": { + "/api/schedulerEvents/startTime/{startTime}/endTime/{endTime}": { "get": { "tags": [ - "secret-controller" + "scheduler-event-controller" ], - "summary": "Get Secret info by Id (getSecretInfoById)", - "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", - "operationId": "getSecretInfoById", + "summary": "Get scheduler events (getSchedulerEventsByRange)", + "description": "Retrieves scheduler events filtering by event run time. Requested scheduler events must be owned by tenant or assigned to customer which user is performing the request. Scheduler Event With Customer Info extends Scheduler Event Info object and adds 'customerTitle' - a String value representing the title of the customer which user created a Scheduler Event and 'customerIsPublic' - a boolean parameter that specifies if customer is public. See the 'Model' tab of the Response Class for more details. \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\n\n\nAvailable for users with 'TENANT_ADMIN' or 'CUSTOMER_USER' authority.\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", + "operationId": "getSchedulerEventsByRange", "parameters": [ { - "name": "id", + "name": "startTime", "in": "path", + "description": "Start time filter in milliseconds for scheduler event run time", "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "endTime", + "in": "path", + "description": "End time filter in milliseconds for scheduler event run time", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "type", + "in": "query", + "description": "A string value representing the scheduler type. For example, 'generateReport'", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "edgeId", + "in": "query", + "description": "A string value representing the edge id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "required": false, "schema": { "type": "string", "format": "uuid" } + }, + { + "name": "textSearch", + "in": "query", + "description": "Case-insensitive 'substring' filter based on event's name, type, or customer's name", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -90991,7 +90261,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SecretInfo" + "type": "array", + "items": { + "$ref": "#/components/schemas/SchedulerEventWithCustomerInfo" + } } } } @@ -91112,37 +90385,24 @@ ] } }, - "/api/secret/{id}/value": { - "put": { + "/api/secret": { + "get": { "tags": [ "secret-controller" ], - "summary": "Update Secret value", - "description": "Updates the value of the existing Secret by secretId. Referencing a non-existing Secret Id will cause a 'Not Found' error.", - "operationId": "updateSecretValue", + "summary": "Get Secret info by name (getSecretInfoByName)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getSecretInfoByName", "parameters": [ { - "name": "id", - "in": "path", - "description": "Unique identifier of the Secret to update", + "name": "name", + "in": "query", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "string", - "description": "New value for the Secret" - } - } - }, - "required": true - }, "responses": { "200": { "description": "OK", @@ -91268,79 +90528,31 @@ "ApiKeyForm": [] } ] - } - }, - "/api/secrets": { - "get": { + }, + "post": { "tags": [ "secret-controller" ], - "summary": "Get Tenant Secret infos (getSecretInfos)", - "description": "Returns a page of secret infos 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": "getSecretInfos", - "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 secret name and description.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "sortProperty", - "in": "query", - "description": "Property of entity to sort by", - "required": false, - "schema": { - "type": "string", - "enum": [ - "name" - ] + "summary": "Save or Update Secret (saveSecret)", + "description": "Create or update the Secret. When creating secret, platform generates Secret Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Secret Id will be present in the response. Specify existing Secret Id to update the secret. Secret name is not updatable, only value could be changed. Referencing non-existing Secret Id will cause 'Not Found' error.\n\nSecret name is unique in the scope of tenant.", + "operationId": "saveSecret", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Secret" + } } }, - { - "name": "sortOrder", - "in": "query", - "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - } - ], + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PageDataSecretInfo" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -91357,7 +90569,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -91461,39 +90673,24 @@ ] } }, - "/api/noauth/selfRegistration/privacyPolicy": { + "/api/secret/names": { "get": { "tags": [ - "self-registration-controller" - ], - "summary": "Get Privacy Policy for Self Registration form (getPrivacyPolicy)", - "description": "Fetch the Privacy Policy based on the domain name from the request. Available for non-authorized users. ", - "operationId": "getPrivacyPolicy", - "parameters": [ - { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/PlatformType" - } - } + "secret-controller" ], + "summary": "Get Tenant Secret names (getSecretNames)", + "description": "Returns a page of secret names 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": "getSecretNames", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } } } @@ -91603,37 +90800,33 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { - "get": { + "/api/secret/{id}": { + "delete": { "tags": [ - "self-registration-controller" + "secret-controller" ], - "summary": "Get Self Registration form parameters without authentication (getSignUpSelfRegistrationParams)", - "description": "Fetch the Self Registration parameters based on the domain name from the request. Available for non-authorized users. Contains the information to customize the sign-up form.", - "operationId": "getSignUpSelfRegistrationParams", + "summary": "Delete secret by ID (deleteSecret)", + "description": "Deletes the secret. Referencing non-existing Secret Id will cause an error.\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "deleteSecret", "parameters": [ { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platformType", - "in": "query", - "description": "Platform type", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "format": "uuid" } } ], @@ -91643,7 +90836,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpSelfRegistrationParams" + "$ref": "#/components/schemas/TbSecretDeleteResult" } } } @@ -91753,42 +90946,54 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/noauth/selfRegistration/termsOfUse": { - "get": { + "/api/secret/{id}/description": { + "put": { "tags": [ - "self-registration-controller" + "secret-controller" ], - "summary": "Get Terms of Use for Self Registration form (getTermsOfUse)", - "description": "Fetch the Terms of Use based on the domain name from the request. Available for non-authorized users. ", - "operationId": "getTermsOfUse", + "summary": "Update Secret Description", + "description": "Updates the description of the existing Secret by secretId. Only the description can be updated. Referencing a non-existing Secret Id will cause a 'Not Found' error.", + "operationId": "updateSecretDescription", "parameters": [ { - "name": "pkgName", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "description": "Unique identifier of the Secret to update", + "required": true, "schema": { - "$ref": "#/components/schemas/PlatformType" + "type": "string", + "format": "uuid" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "New description for the Secret" + } + } + } + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -91898,24 +91103,43 @@ } } } - } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] } }, - "/api/selfRegistration/selfRegistrationParams": { + "/api/secret/{id}/info": { "get": { "tags": [ - "self-registration-controller" + "secret-controller" + ], + "summary": "Get Secret info by Id (getSecretInfoById)", + "description": "\n\nAvailable for users with 'TENANT_ADMIN' authority.", + "operationId": "getSecretInfoById", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Get Self Registration parameters (getSelfRegistrationParams)", - "description": "Fetch the Self Registration parameters object for the tenant of the current user. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", - "operationId": "getWebSelfRegistrationParams", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfRegistrationParams" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -92034,19 +91258,34 @@ "ApiKeyForm": [] } ] - }, - "post": { + } + }, + "/api/secret/{id}/value": { + "put": { "tags": [ - "self-registration-controller" + "secret-controller" + ], + "summary": "Update Secret value", + "description": "Updates the value of the existing Secret by secretId. Referencing a non-existing Secret Id will cause a 'Not Found' error.", + "operationId": "updateSecretValue", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique identifier of the Secret to update", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Create Or Update Self Registration parameters (saveSelfRegistrationParams)", - "description": "Creates or Updates the Self Registration parameters. When creating, platform generates Admin Settings Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Admin Settings Id will be present in the response. Specify existing Admin Settings Id to update the Self Registration parameters. Referencing non-existing Admin Settings Id will cause 'Not Found' error.\n\nSelf Registration allows users to signup for using the platform and automatically create a Customer account for them. You may configure default dashboard and user roles that will be assigned for this Customer. This allows you to build out-of-the-box solutions for customers. Ability to white-label the login and main pages helps to brand the platform.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", - "operationId": "saveWebSelfRegistrationParams", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" + "type": "string", + "description": "New value for the Secret" } } }, @@ -92058,7 +91297,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebSelfRegistrationParams" + "$ref": "#/components/schemas/SecretInfo" } } } @@ -92075,7 +91314,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -92177,16 +91416,82 @@ "ApiKeyForm": [] } ] - }, - "delete": { + } + }, + "/api/secrets": { + "get": { "tags": [ - "self-registration-controller" + "secret-controller" + ], + "summary": "Get Tenant Secret infos (getSecretInfos)", + "description": "Returns a page of secret infos 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": "getSecretInfos", + "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 secret name and description.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sortProperty", + "in": "query", + "description": "Property of entity to sort by", + "required": false, + "schema": { + "type": "string", + "enum": [ + "name" + ] + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } ], - "summary": "deleteWebSelfRegistrationParams", - "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PageDataSecretInfo" + } + } + } }, "400": { "description": "Bad Request", @@ -92304,28 +91609,18 @@ ] } }, - "/api/noauth/activateByEmailCode": { - "post": { + "/api/noauth/selfRegistration/privacyPolicy": { + "get": { "tags": [ - "sign-up-controller" + "self-registration-controller" ], - "summary": "Activate and login using code from Email (activateUserByEmailCode)", - "description": "Activate the user using code(link) from the activation email and return the JWT Token. Sends the notification and email about user activation. Checks that user was not activated yet.", - "operationId": "activateUserByEmailCode", + "summary": "Get Privacy Policy for Self Registration form (getPrivacyPolicy)", + "description": "Fetch the Privacy Policy based on the domain name from the request. Available for non-authorized users. ", + "operationId": "getPrivacyPolicy", "parameters": [ - { - "name": "emailCode", - "in": "query", - "description": "Activation token.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pkgName", "in": "query", - "description": "Optional package name of the mobile application.", "required": false, "schema": { "type": "string" @@ -92334,14 +91629,9 @@ { "name": "platform", "in": "query", - "description": "Platform type", "required": false, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "$ref": "#/components/schemas/PlatformType" } } ], @@ -92351,7 +91641,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JwtPair" + "type": "string" } } } @@ -92368,7 +91658,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -92464,35 +91754,25 @@ } } }, - "/api/noauth/activateEmail": { + "/api/noauth/selfRegistration/signUpSelfRegistrationParams": { "get": { "tags": [ - "sign-up-controller" + "self-registration-controller" ], - "summary": "Activate User using code from Email (activateEmail)", - "description": "Activate the user using code(link) from the activation email. Validates the code an redirects according to the signup flow. Checks that user was not activated yet.", - "operationId": "activateEmail", + "summary": "Get Self Registration form parameters without authentication (getSignUpSelfRegistrationParams)", + "description": "Fetch the Self Registration parameters based on the domain name from the request. Available for non-authorized users. Contains the information to customize the sign-up form.", + "operationId": "getSignUpSelfRegistrationParams", "parameters": [ - { - "name": "emailCode", - "in": "query", - "description": "Activation token.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "pkgName", "in": "query", - "description": "Optional package name of the mobile application.", "required": false, "schema": { "type": "string" } }, { - "name": "platform", + "name": "platformType", "in": "query", "description": "Platform type", "required": false, @@ -92511,7 +91791,7 @@ "content": { "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SignUpSelfRegistrationParams" } } } @@ -92624,20 +91904,19 @@ } } }, - "/api/noauth/login": { + "/api/noauth/selfRegistration/termsOfUse": { "get": { "tags": [ - "sign-up-controller" + "self-registration-controller" ], - "summary": "Mobile Login redirect (mobileLogin)", - "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on mobile app.", - "operationId": "mobileLogin", + "summary": "Get Terms of Use for Self Registration form (getTermsOfUse)", + "description": "Fetch the Terms of Use based on the domain name from the request. Available for non-authorized users. ", + "operationId": "getTermsOfUse", "parameters": [ { "name": "pkgName", "in": "query", - "description": "Mobile app package name. Used to identify the application and build the redirect link.", - "required": true, + "required": false, "schema": { "type": "string" } @@ -92645,14 +91924,9 @@ { "name": "platform", "in": "query", - "description": "Platform type", - "required": true, + "required": false, "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] + "$ref": "#/components/schemas/PlatformType" } } ], @@ -92775,51 +92049,24 @@ } } }, - "/api/noauth/resendEmailActivation": { - "post": { + "/api/selfRegistration/selfRegistrationParams": { + "get": { "tags": [ - "sign-up-controller" - ], - "summary": "Resend Activation Email (resendEmailActivation)", - "description": "Request to resend the activation email for the user. Checks that user was not activated yet.", - "operationId": "resendEmailActivation", - "parameters": [ - { - "name": "email", - "in": "query", - "description": "Email of the user.", - "required": true, - "schema": { - "type": "string" - }, - "example": "john.doe@company.com" - }, - { - "name": "pkgName", - "in": "query", - "description": "Optional package name of the mobile application.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "platform", - "in": "query", - "description": "Platform type", - "required": false, - "schema": { - "type": "string", - "enum": [ - "ANDROID", - "IOS" - ] - } - } + "self-registration-controller" ], + "summary": "Get Self Registration parameters (getSelfRegistrationParams)", + "description": "Fetch the Self Registration parameters object for the tenant of the current user. \n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'READ' permission for the white labeling resource.", + "operationId": "getWebSelfRegistrationParams", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfRegistrationParams" + } + } + } }, "400": { "description": "Bad Request", @@ -92833,7 +92080,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -92926,22 +92173,28 @@ } } } - } - } - }, - "/api/noauth/signup": { + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + }, "post": { "tags": [ - "sign-up-controller" + "self-registration-controller" ], - "summary": "User Sign Up (signUp)", - "description": "Process user sign up request. Creates the Customer and corresponding User based on self Registration parameters for the domain. See [Self Registration Controller](/swagger-ui.html#/self-registration-controller) for more details. The result is either 'SUCCESS' or 'INACTIVE_USER_EXISTS'. If Success, the user will receive an email with instruction to activate the account. The content of the email is customizable via the mail templates.", - "operationId": "signUp", + "summary": "Create Or Update Self Registration parameters (saveSelfRegistrationParams)", + "description": "Creates or Updates the Self Registration parameters. When creating, platform generates Admin Settings Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Admin Settings Id will be present in the response. Specify existing Admin Settings Id to update the Self Registration parameters. Referencing non-existing Admin Settings Id will cause 'Not Found' error.\n\nSelf Registration allows users to signup for using the platform and automatically create a Customer account for them. You may configure default dashboard and user roles that will be assigned for this Customer. This allows you to build out-of-the-box solutions for customers. Ability to white-label the login and main pages helps to brand the platform.\n\nAvailable for users with 'TENANT_ADMIN' authority.\n\nSecurity check is performed to verify that the user has 'WRITE' permission for the white labeling resource.", + "operationId": "saveWebSelfRegistrationParams", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpRequest" + "$ref": "#/components/schemas/WebSelfRegistrationParams" } } }, @@ -92953,134 +92206,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignUpResult" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-400": { - "summary": "Bad Request", - "value": { - "status": 400, - "message": "Invalid request body", - "errorCode": 31, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-401": { - "summary": "Unauthorized", - "value": { - "status": 401, - "message": "Authentication failed", - "errorCode": 10, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-403": { - "summary": "Forbidden", - "value": { - "status": 403, - "message": "You don't have permission to perform this operation!", - "errorCode": 20, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-404": { - "summary": "Not Found", - "value": { - "status": 404, - "message": "Requested item wasn't found!", - "errorCode": 32, - "timestamp": 1609459200000 - } - } - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThingsboardErrorResponse" - }, - "examples": { - "error-code-429": { - "summary": "Too Many Requests", - "value": { - "status": 429, - "message": "Too many requests for current tenant!", - "errorCode": 33, - "timestamp": 1609459200000 - } - } - } - } - } - } - } - } - }, - "/api/signup/acceptPrivacyPolicy": { - "post": { - "tags": [ - "sign-up-controller" - ], - "summary": "Accept privacy policy (acceptPrivacyPolicy)", - "description": "Accept privacy policy by the current user.", - "operationId": "acceptPrivacyPolicy", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" + "$ref": "#/components/schemas/WebSelfRegistrationParams" } } } @@ -93199,26 +92325,16 @@ "ApiKeyForm": [] } ] - } - }, - "/api/signup/acceptTermsOfUse": { - "post": { + }, + "delete": { "tags": [ - "sign-up-controller" + "self-registration-controller" ], - "summary": "Accept Terms of Use (acceptTermsOfUse)", - "description": "Accept Terms of Use by the current user.", - "operationId": "acceptTermsOfUse", + "summary": "deleteWebSelfRegistrationParams", + "operationId": "deleteWebSelfRegistrationParams", "responses": { "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonNode" - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -93232,7 +92348,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -93336,21 +92452,54 @@ ] } }, - "/api/signup/privacyPolicyAccepted": { - "get": { + "/api/noauth/activateByEmailCode": { + "post": { "tags": [ "sign-up-controller" ], - "summary": "Check privacy policy (privacyPolicyAccepted)", - "description": "Checks that current user accepted the privacy policy.", - "operationId": "privacyPolicyAccepted", + "summary": "Activate and login using code from Email (activateUserByEmailCode)", + "description": "Activate the user using code(link) from the activation email and return the JWT Token. Sends the notification and email about user activation. Checks that user was not activated yet.", + "operationId": "activateUserByEmailCode", + "parameters": [ + { + "name": "emailCode", + "in": "query", + "description": "Activation token.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/JwtPair" } } } @@ -93367,7 +92516,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -93460,32 +92609,57 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/signup/termsOfUseAccepted": { + "/api/noauth/activateEmail": { "get": { "tags": [ "sign-up-controller" ], - "summary": "Check Terms Of User (termsOfUseAccepted)", - "description": "Checks that current user accepted the privacy policy.", - "operationId": "termsOfUseAccepted", + "summary": "Activate User using code from Email (activateEmail)", + "description": "Activate the user using code(link) from the activation email. Validates the code an redirects according to the signup flow. Checks that user was not activated yet.", + "operationId": "activateEmail", + "parameters": [ + { + "name": "emailCode", + "in": "query", + "description": "Activation token.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } + } + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "boolean" + "type": "string" } } } @@ -93595,34 +92769,39 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/solutions/templates/details/{solutionTemplateId}": { + "/api/noauth/login": { "get": { "tags": [ - "solution-controller" + "sign-up-controller" ], - "summary": "Get Solution template details (getSolutionTemplateDetails)", - "description": "Get a solution template details based on the provided id\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateDetails", + "summary": "Mobile Login redirect (mobileLogin)", + "description": "This method generates redirect to the special link that is handled by mobile application. Useful for email verification flow on mobile app.", + "operationId": "mobileLogin", "parameters": [ { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", + "name": "pkgName", + "in": "query", + "description": "Mobile app package name. Used to identify the application and build the redirect link.", "required": true, "schema": { "type": "string" } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": true, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } ], "responses": { @@ -93631,7 +92810,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateDetails" + "type": "string" } } } @@ -93741,35 +92920,188 @@ } } } - }, - "security": [ + } + } + }, + "/api/noauth/resendEmailActivation": { + "post": { + "tags": [ + "sign-up-controller" + ], + "summary": "Resend Activation Email (resendEmailActivation)", + "description": "Request to resend the activation email for the user. Checks that user was not activated yet.", + "operationId": "resendEmailActivation", + "parameters": [ { - "HttpLoginForm": [] + "name": "email", + "in": "query", + "description": "Email of the user.", + "required": true, + "schema": { + "type": "string" + }, + "example": "john.doe@company.com" }, { - "ApiKeyForm": [] + "name": "pkgName", + "in": "query", + "description": "Optional package name of the mobile application.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "platform", + "in": "query", + "description": "Platform type", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ANDROID", + "IOS" + ] + } } - ] + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid request body", + "errorCode": 31, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "status": 403, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "status": 404, + "message": "Requested item wasn't found!", + "errorCode": 32, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "status": 429, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "timestamp": 1609459200000 + } + } + } + } + } + } + } } }, - "/api/solutions/templates/infos": { - "get": { + "/api/noauth/signup": { + "post": { "tags": [ - "solution-controller" + "sign-up-controller" ], - "summary": "Get Solution templates (getSolutionTemplateInfos)", - "description": "Get a list of solution template descriptors\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateInfos", + "summary": "User Sign Up (signUp)", + "description": "Process user sign up request. Creates the Customer and corresponding User based on self Registration parameters for the domain. See [Self Registration Controller](/swagger-ui.html#/self-registration-controller) for more details. The result is either 'SUCCESS' or 'INACTIVE_USER_EXISTS'. If Success, the user will receive an email with instruction to activate the account. The content of the email is customizable via the mail templates.", + "operationId": "signUp", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignUpRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TenantSolutionTemplateInfo" - } + "$ref": "#/components/schemas/SignUpResult" } } } @@ -93786,7 +93118,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -93879,43 +93211,24 @@ } } } - }, - "security": [ - { - "HttpLoginForm": [] - }, - { - "ApiKeyForm": [] - } - ] + } } }, - "/api/solutions/templates/instructions/{solutionTemplateId}": { - "get": { + "/api/signup/acceptPrivacyPolicy": { + "post": { "tags": [ - "solution-controller" - ], - "summary": "Get Solution Template Instructions (getSolutionTemplateInstructions)", - "description": "Get a solution template instructions based on the provided id\n\n Security check is performed to verify that the user has 'READ' permission for the entity (entities).", - "operationId": "getSolutionTemplateInstructions", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "Accept privacy policy (acceptPrivacyPolicy)", + "description": "Accept privacy policy by the current user.", + "operationId": "acceptPrivacyPolicy", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TenantSolutionTemplateInstructions" + "$ref": "#/components/schemas/JsonNode" } } } @@ -93932,7 +93245,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -94036,28 +93349,24 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/delete": { - "delete": { + "/api/signup/acceptTermsOfUse": { + "post": { "tags": [ - "solution-controller" - ], - "summary": "Uninstall Solution Template (uninstallSolutionTemplate)", - "description": "Uninstall solution template based on the provided id\n\n Security check is performed to verify that the user has 'DELETE' permission for the entity (entities).", - "operationId": "uninstallSolutionTemplate", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" - } - } + "sign-up-controller" ], + "summary": "Accept Terms of Use (acceptTermsOfUse)", + "description": "Accept Terms of Use by the current user.", + "operationId": "acceptTermsOfUse", "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } }, "400": { "description": "Bad Request", @@ -94071,7 +93380,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid UUID string: 123", + "message": "Invalid request body", "errorCode": 31, "timestamp": 1609459200000 } @@ -94175,32 +93484,156 @@ ] } }, - "/api/solutions/templates/{solutionTemplateId}/install": { - "post": { + "/api/signup/privacyPolicyAccepted": { + "get": { "tags": [ - "solution-controller" + "sign-up-controller" ], - "summary": "Install Solution Template (installSolutionTemplate)", - "description": "Install solution template based on the provided id\n\n Security check is performed to verify that the user has 'WRITE' permission for the entity (entities).", - "operationId": "installSolutionTemplate", - "parameters": [ - { - "name": "solutionTemplateId", - "in": "path", - "description": "A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'", - "required": true, - "schema": { - "type": "string" + "summary": "Check privacy policy (privacyPolicyAccepted)", + "description": "Checks that current user accepted the privacy policy.", + "operationId": "privacyPolicyAccepted", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-400": { + "summary": "Bad Request", + "value": { + "status": 400, + "message": "Invalid UUID string: 123", + "errorCode": 31, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-401": { + "summary": "Unauthorized", + "value": { + "status": 401, + "message": "Authentication failed", + "errorCode": 10, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-403": { + "summary": "Forbidden", + "value": { + "status": 403, + "message": "You don't have permission to perform this operation!", + "errorCode": 20, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-404": { + "summary": "Not Found", + "value": { + "status": 404, + "message": "Requested item wasn't found!", + "errorCode": 32, + "timestamp": 1609459200000 + } + } + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThingsboardErrorResponse" + }, + "examples": { + "error-code-429": { + "summary": "Too Many Requests", + "value": { + "status": 429, + "message": "Too many requests for current tenant!", + "errorCode": 33, + "timestamp": 1609459200000 + } + } + } + } } } + }, + "security": [ + { + "HttpLoginForm": [] + }, + { + "ApiKeyForm": [] + } + ] + } + }, + "/api/signup/termsOfUseAccepted": { + "get": { + "tags": [ + "sign-up-controller" ], + "summary": "Check Terms Of User (termsOfUseAccepted)", + "description": "Checks that current user accepted the privacy policy.", + "operationId": "termsOfUseAccepted", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SolutionInstallResponse" + "type": "boolean" } } } @@ -94217,7 +93650,7 @@ "summary": "Bad Request", "value": { "status": 400, - "message": "Invalid request body", + "message": "Invalid UUID string: 123", "errorCode": 31, "timestamp": 1609459200000 } @@ -142711,35 +142144,6 @@ } } }, - "SolutionInstallResponse": { - "type": "object", - "properties": { - "dashboardGroupId": { - "$ref": "#/components/schemas/EntityGroupId", - "description": "Id of the group that contains main dashboard of the solution" - }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "Id of the main dashboard of the solution" - }, - "publicId": { - "$ref": "#/components/schemas/CustomerId", - "description": "Id of the public customer if solution has public entities" - }, - "mainDashboardPublic": { - "type": "boolean", - "description": "Is the main dashboard public" - }, - "details": { - "type": "string", - "description": "Markdown with solution usage instructions" - }, - "success": { - "type": "boolean", - "description": "Indicates that template was installed successfully" - } - } - }, "SolutionStep": { "type": "string", "enum": [ @@ -142747,14 +142151,6 @@ "DASHBOARDS_CONFIGURATION" ] }, - "SolutionTemplateLevel": { - "type": "string", - "enum": [ - "MAKER", - "PROTOTYPE", - "STARTUP" - ] - }, "SolutionValidationResult": { "type": "object", "description": "Result of a solution validation (dry-run). Checks structural validity and dependency references without modifying any data.", @@ -144314,144 +143710,6 @@ } } }, - "TenantSolutionTemplateDetails": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the solution template", - "example": "smart_office" - }, - "title": { - "type": "string", - "description": "Template Title", - "example": "Smart office" - }, - "level": { - "$ref": "#/components/schemas/SolutionTemplateLevel", - "description": "Level of the subscription that is required to unlock the template", - "example": "PROTOTYPE" - }, - "installTimeoutMs": { - "type": "integer", - "format": "int64", - "description": "Timeout for the installation UI to wait while template is installing" - }, - "tenantTelemetryKeys": { - "type": "array", - "description": "What keys to delete during template uninstall", - "items": { - "type": "string" - } - }, - "tenantAttributeKeys": { - "type": "array", - "description": "What attributes to delete during template uninstall", - "items": { - "type": "string" - } - }, - "imageUrls": { - "type": "array", - "items": { - "type": "string" - } - }, - "highlights": { - "type": "string" - }, - "description": { - "type": "string" - }, - "installed": { - "type": "boolean" - } - } - }, - "TenantSolutionTemplateInfo": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the solution template", - "example": "smart_office" - }, - "title": { - "type": "string", - "description": "Template Title", - "example": "Smart office" - }, - "level": { - "$ref": "#/components/schemas/SolutionTemplateLevel", - "description": "Level of the subscription that is required to unlock the template", - "example": "PROTOTYPE" - }, - "installTimeoutMs": { - "type": "integer", - "format": "int64", - "description": "Timeout for the installation UI to wait while template is installing" - }, - "tenantTelemetryKeys": { - "type": "array", - "description": "What keys to delete during template uninstall", - "items": { - "type": "string" - } - }, - "tenantAttributeKeys": { - "type": "array", - "description": "What attributes to delete during template uninstall", - "items": { - "type": "string" - } - }, - "previewImageUrl": { - "type": "string", - "description": "URL of the preview image" - }, - "videoPreviewImageUrl": { - "type": "string", - "description": "Video preview image URL" - }, - "previewMp4Url": { - "type": "string", - "description": "Video MP4 URL" - }, - "previewWebmUrl": { - "type": "string", - "description": "Video WEBM URL" - }, - "installed": { - "type": "boolean", - "description": "Indicates that template is already installed for the current tenant" - } - } - }, - "TenantSolutionTemplateInstructions": { - "type": "object", - "properties": { - "dashboardGroupId": { - "$ref": "#/components/schemas/EntityGroupId", - "description": "Id of the group that contains main dashboard of the solution" - }, - "dashboardId": { - "$ref": "#/components/schemas/DashboardId", - "description": "Id of the main dashboard of the solution" - }, - "publicId": { - "$ref": "#/components/schemas/CustomerId", - "description": "Id of the public customer if solution has public entities" - }, - "mainDashboardPublic": { - "type": "boolean", - "description": "Is the main dashboard public" - }, - "details": { - "type": "string", - "description": "Markdown with solution usage instructions" - } - } - }, "TestSmsRequest": { "type": "object", "description": "A JSON value representing the Test SMS request.", diff --git a/pe/tb_pe_client/__init__.py b/pe/tb_pe_client/__init__.py index db8d3086..2c04bb84 100644 --- a/pe/tb_pe_client/__init__.py +++ b/pe/tb_pe_client/__init__.py @@ -104,7 +104,6 @@ from tb_pe_client.api.secret_controller_api import SecretControllerApi from tb_pe_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_pe_client.api.sign_up_controller_api import SignUpControllerApi - from tb_pe_client.api.solution_controller_api import SolutionControllerApi from tb_pe_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_pe_client.api.tb_resource_controller_api import TbResourceControllerApi from tb_pe_client.api.telemetry_controller_api import TelemetryControllerApi @@ -906,9 +905,7 @@ from tb_pe_client.models.solution_export_request import SolutionExportRequest from tb_pe_client.models.solution_export_response import SolutionExportResponse from tb_pe_client.models.solution_import_result import SolutionImportResult - from tb_pe_client.models.solution_install_response import SolutionInstallResponse from tb_pe_client.models.solution_step import SolutionStep - from tb_pe_client.models.solution_template_level import SolutionTemplateLevel from tb_pe_client.models.solution_validation_result import SolutionValidationResult from tb_pe_client.models.specific_time_schedule import SpecificTimeSchedule from tb_pe_client.models.split_view_component import SplitViewComponent @@ -960,9 +957,6 @@ from tb_pe_client.models.tenant_profile_data import TenantProfileData from tb_pe_client.models.tenant_profile_id import TenantProfileId from tb_pe_client.models.tenant_profile_queue_configuration import TenantProfileQueueConfiguration - from tb_pe_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails - from tb_pe_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo - from tb_pe_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions from tb_pe_client.models.test_sms_request import TestSmsRequest from tb_pe_client.models.text_alignment import TextAlignment from tb_pe_client.models.thingsboard_credentials_expired_response import ThingsboardCredentialsExpiredResponse @@ -1138,7 +1132,6 @@ "SecretControllerApi": "tb_pe_client.api.secret_controller_api", "SelfRegistrationControllerApi": "tb_pe_client.api.self_registration_controller_api", "SignUpControllerApi": "tb_pe_client.api.sign_up_controller_api", - "SolutionControllerApi": "tb_pe_client.api.solution_controller_api", "SolutionExportImportControllerApi": "tb_pe_client.api.solution_export_import_controller_api", "TbResourceControllerApi": "tb_pe_client.api.tb_resource_controller_api", "TelemetryControllerApi": "tb_pe_client.api.telemetry_controller_api", @@ -1940,9 +1933,7 @@ "SolutionExportRequest": "tb_pe_client.models.solution_export_request", "SolutionExportResponse": "tb_pe_client.models.solution_export_response", "SolutionImportResult": "tb_pe_client.models.solution_import_result", - "SolutionInstallResponse": "tb_pe_client.models.solution_install_response", "SolutionStep": "tb_pe_client.models.solution_step", - "SolutionTemplateLevel": "tb_pe_client.models.solution_template_level", "SolutionValidationResult": "tb_pe_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_pe_client.models.specific_time_schedule", "SplitViewComponent": "tb_pe_client.models.split_view_component", @@ -1994,9 +1985,6 @@ "TenantProfileData": "tb_pe_client.models.tenant_profile_data", "TenantProfileId": "tb_pe_client.models.tenant_profile_id", "TenantProfileQueueConfiguration": "tb_pe_client.models.tenant_profile_queue_configuration", - "TenantSolutionTemplateDetails": "tb_pe_client.models.tenant_solution_template_details", - "TenantSolutionTemplateInfo": "tb_pe_client.models.tenant_solution_template_info", - "TenantSolutionTemplateInstructions": "tb_pe_client.models.tenant_solution_template_instructions", "TestSmsRequest": "tb_pe_client.models.test_sms_request", "TextAlignment": "tb_pe_client.models.text_alignment", "ThingsboardCredentialsExpiredResponse": "tb_pe_client.models.thingsboard_credentials_expired_response", diff --git a/pe/tb_pe_client/_controller_map.py b/pe/tb_pe_client/_controller_map.py index 89c075ce..cd51e374 100644 --- a/pe/tb_pe_client/_controller_map.py +++ b/pe/tb_pe_client/_controller_map.py @@ -409,6 +409,9 @@ "export_image": ("tb_pe_client.api.image_controller_api", "ImageControllerApi"), "export_image_with_http_info": ("tb_pe_client.api.image_controller_api", "ImageControllerApi"), "export_image_without_preload_content": ("tb_pe_client.api.image_controller_api", "ImageControllerApi"), + "export_integration_package": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), + "export_integration_package_with_http_info": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), + "export_integration_package_without_preload_content": ("tb_pe_client.api.integration_controller_api", "IntegrationControllerApi"), "export_rule_chains": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "export_rule_chains_with_http_info": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), "export_rule_chains_without_preload_content": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), @@ -1367,15 +1370,6 @@ "get_sign_up_self_registration_params_with_http_info": ("tb_pe_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "get_sign_up_self_registration_params_without_preload_content": ("tb_pe_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "get_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "get_solution_template_details": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_details_with_http_info": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_details_without_preload_content": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos_with_http_info": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_infos_without_preload_content": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions_with_http_info": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "get_solution_template_instructions_without_preload_content": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), "get_solution_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "get_solution_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "get_solutions": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), @@ -1667,9 +1661,6 @@ "import_solution_with_http_info": ("tb_pe_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "import_solution_without_preload_content": ("tb_pe_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "install_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "install_solution_template": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "install_solution_template_with_http_info": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "install_solution_template_without_preload_content": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), "install_solution_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "install_solution_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "is_customer_white_labeling_allowed": ("tb_pe_client.api.white_labeling_controller_api", "WhiteLabelingControllerApi"), @@ -2132,9 +2123,6 @@ "unassign_scheduler_event_from_edge_with_http_info": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "unassign_scheduler_event_from_edge_without_preload_content": ("tb_pe_client.api.scheduler_event_controller_api", "SchedulerEventControllerApi"), "uninstall_solution": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), - "uninstall_solution_template": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "uninstall_solution_template_with_http_info": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), - "uninstall_solution_template_without_preload_content": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), "uninstall_solution_with_http_info": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "uninstall_solution_without_preload_content": ("tb_pe_client.api.ai_solution_controller_api", "AiSolutionControllerApi"), "unset_auto_assign_to_edge_rule_chain": ("tb_pe_client.api.rule_chain_controller_api", "RuleChainControllerApi"), @@ -2289,7 +2277,6 @@ "secret_controller": ("tb_pe_client.api.secret_controller_api", "SecretControllerApi"), "self_registration_controller": ("tb_pe_client.api.self_registration_controller_api", "SelfRegistrationControllerApi"), "sign_up_controller": ("tb_pe_client.api.sign_up_controller_api", "SignUpControllerApi"), - "solution_controller": ("tb_pe_client.api.solution_controller_api", "SolutionControllerApi"), "solution_export_import_controller": ("tb_pe_client.api.solution_export_import_controller_api", "SolutionExportImportControllerApi"), "tb_resource_controller": ("tb_pe_client.api.tb_resource_controller_api", "TbResourceControllerApi"), "telemetry_controller": ("tb_pe_client.api.telemetry_controller_api", "TelemetryControllerApi"), diff --git a/pe/tb_pe_client/api/__init__.py b/pe/tb_pe_client/api/__init__.py index 1e54f27f..b70b81e1 100644 --- a/pe/tb_pe_client/api/__init__.py +++ b/pe/tb_pe_client/api/__init__.py @@ -85,7 +85,6 @@ "SecretControllerApi", "SelfRegistrationControllerApi", "SignUpControllerApi", - "SolutionControllerApi", "SolutionExportImportControllerApi", "TbResourceControllerApi", "TelemetryControllerApi", @@ -174,7 +173,6 @@ from tb_pe_client.api.secret_controller_api import SecretControllerApi from tb_pe_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_pe_client.api.sign_up_controller_api import SignUpControllerApi - from tb_pe_client.api.solution_controller_api import SolutionControllerApi from tb_pe_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_pe_client.api.tb_resource_controller_api import TbResourceControllerApi from tb_pe_client.api.telemetry_controller_api import TelemetryControllerApi @@ -262,7 +260,6 @@ "SecretControllerApi": "tb_pe_client.api.secret_controller_api", "SelfRegistrationControllerApi": "tb_pe_client.api.self_registration_controller_api", "SignUpControllerApi": "tb_pe_client.api.sign_up_controller_api", - "SolutionControllerApi": "tb_pe_client.api.solution_controller_api", "SolutionExportImportControllerApi": "tb_pe_client.api.solution_export_import_controller_api", "TbResourceControllerApi": "tb_pe_client.api.tb_resource_controller_api", "TelemetryControllerApi": "tb_pe_client.api.telemetry_controller_api", diff --git a/pe/tb_pe_client/api/admin_controller_api.py b/pe/tb_pe_client/api/admin_controller_api.py index 4eecb83c..1f3e8cd2 100644 --- a/pe/tb_pe_client/api/admin_controller_api.py +++ b/pe/tb_pe_client/api/admin_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ai_chat_controller_api.py b/pe/tb_pe_client/api/ai_chat_controller_api.py index cd865135..cf37abff 100644 --- a/pe/tb_pe_client/api/ai_chat_controller_api.py +++ b/pe/tb_pe_client/api/ai_chat_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -1183,7 +1183,7 @@ def send_chat_message( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> List[object]: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1215,6 +1215,7 @@ def send_chat_message( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1266,7 +1267,7 @@ def send_chat_message_with_http_info( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> ApiResponse[List[object]]: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1298,6 +1299,7 @@ def send_chat_message_with_http_info( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1349,7 +1351,7 @@ def send_chat_message_without_preload_content( _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, ) -> RESTResponseType: - """sendChatMessage + """(Deprecated) sendChatMessage :param chat_id: (required) @@ -1381,6 +1383,7 @@ def send_chat_message_without_preload_content( :type _host_index: int, optional :return: Returns the result object. """ # noqa: E501 + warnings.warn("POST /api/ai/chats/{chatId}/messages is deprecated.", DeprecationWarning) _param = self._send_chat_message_serialize( chat_id=chat_id, @@ -1465,7 +1468,8 @@ def _send_chat_message_serialize( _default_content_type = ( self.api_client.select_header_content_type( [ - 'text/plain' + 'text/plain', + 'application/json' ] ) ) diff --git a/pe/tb_pe_client/api/ai_device_dashboard_controller_api.py b/pe/tb_pe_client/api/ai_device_dashboard_controller_api.py index ccfea230..56ff2b8d 100644 --- a/pe/tb_pe_client/api/ai_device_dashboard_controller_api.py +++ b/pe/tb_pe_client/api/ai_device_dashboard_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ai_model_controller_api.py b/pe/tb_pe_client/api/ai_model_controller_api.py index 60c8bc46..e8828172 100644 --- a/pe/tb_pe_client/api/ai_model_controller_api.py +++ b/pe/tb_pe_client/api/ai_model_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ai_solution_controller_api.py b/pe/tb_pe_client/api/ai_solution_controller_api.py index 2ff8d234..10ef78e9 100644 --- a/pe/tb_pe_client/api/ai_solution_controller_api.py +++ b/pe/tb_pe_client/api/ai_solution_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ai_tool_controller_api.py b/pe/tb_pe_client/api/ai_tool_controller_api.py index bd76c2ce..76052f7a 100644 --- a/pe/tb_pe_client/api/ai_tool_controller_api.py +++ b/pe/tb_pe_client/api/ai_tool_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/alarm_comment_controller_api.py b/pe/tb_pe_client/api/alarm_comment_controller_api.py index 61078caa..d29a0f52 100644 --- a/pe/tb_pe_client/api/alarm_comment_controller_api.py +++ b/pe/tb_pe_client/api/alarm_comment_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/alarm_controller_api.py b/pe/tb_pe_client/api/alarm_controller_api.py index 14eabcd5..d9b6e870 100644 --- a/pe/tb_pe_client/api/alarm_controller_api.py +++ b/pe/tb_pe_client/api/alarm_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/alarm_rule_controller_api.py b/pe/tb_pe_client/api/alarm_rule_controller_api.py index 5b609816..b5677fa9 100644 --- a/pe/tb_pe_client/api/alarm_rule_controller_api.py +++ b/pe/tb_pe_client/api/alarm_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/api_key_controller_api.py b/pe/tb_pe_client/api/api_key_controller_api.py index 13b3dda8..e2b8eb05 100644 --- a/pe/tb_pe_client/api/api_key_controller_api.py +++ b/pe/tb_pe_client/api/api_key_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/asset_controller_api.py b/pe/tb_pe_client/api/asset_controller_api.py index 697acc9d..f9473fab 100644 --- a/pe/tb_pe_client/api/asset_controller_api.py +++ b/pe/tb_pe_client/api/asset_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/asset_profile_controller_api.py b/pe/tb_pe_client/api/asset_profile_controller_api.py index fc1b6030..616abff7 100644 --- a/pe/tb_pe_client/api/asset_profile_controller_api.py +++ b/pe/tb_pe_client/api/asset_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/audit_log_controller_api.py b/pe/tb_pe_client/api/audit_log_controller_api.py index 52821b35..d0c44042 100644 --- a/pe/tb_pe_client/api/audit_log_controller_api.py +++ b/pe/tb_pe_client/api/audit_log_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/auth_controller_api.py b/pe/tb_pe_client/api/auth_controller_api.py index 83f116e5..c3a3675e 100644 --- a/pe/tb_pe_client/api/auth_controller_api.py +++ b/pe/tb_pe_client/api/auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/blob_entity_controller_api.py b/pe/tb_pe_client/api/blob_entity_controller_api.py index 331f48d9..fbae22b4 100644 --- a/pe/tb_pe_client/api/blob_entity_controller_api.py +++ b/pe/tb_pe_client/api/blob_entity_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/calculated_field_controller_api.py b/pe/tb_pe_client/api/calculated_field_controller_api.py index ab0eea7d..65039265 100644 --- a/pe/tb_pe_client/api/calculated_field_controller_api.py +++ b/pe/tb_pe_client/api/calculated_field_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/component_descriptor_controller_api.py b/pe/tb_pe_client/api/component_descriptor_controller_api.py index 032898f0..b490dd03 100644 --- a/pe/tb_pe_client/api/component_descriptor_controller_api.py +++ b/pe/tb_pe_client/api/component_descriptor_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/converter_controller_api.py b/pe/tb_pe_client/api/converter_controller_api.py index 95a9df4f..574e4ffc 100644 --- a/pe/tb_pe_client/api/converter_controller_api.py +++ b/pe/tb_pe_client/api/converter_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/converter_library_controller_api.py b/pe/tb_pe_client/api/converter_library_controller_api.py index c85f3869..a776b6fa 100644 --- a/pe/tb_pe_client/api/converter_library_controller_api.py +++ b/pe/tb_pe_client/api/converter_library_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/custom_menu_controller_api.py b/pe/tb_pe_client/api/custom_menu_controller_api.py index 3823781c..6147e335 100644 --- a/pe/tb_pe_client/api/custom_menu_controller_api.py +++ b/pe/tb_pe_client/api/custom_menu_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/custom_translation_controller_api.py b/pe/tb_pe_client/api/custom_translation_controller_api.py index 9241fdf1..a081efd1 100644 --- a/pe/tb_pe_client/api/custom_translation_controller_api.py +++ b/pe/tb_pe_client/api/custom_translation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/customer_controller_api.py b/pe/tb_pe_client/api/customer_controller_api.py index a8634686..24baf6d4 100644 --- a/pe/tb_pe_client/api/customer_controller_api.py +++ b/pe/tb_pe_client/api/customer_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/dashboard_controller_api.py b/pe/tb_pe_client/api/dashboard_controller_api.py index c1b6c530..48a7902a 100644 --- a/pe/tb_pe_client/api/dashboard_controller_api.py +++ b/pe/tb_pe_client/api/dashboard_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/dashboard_report_controller_api.py b/pe/tb_pe_client/api/dashboard_report_controller_api.py index 9a13f85b..e4b4c6a2 100644 --- a/pe/tb_pe_client/api/dashboard_report_controller_api.py +++ b/pe/tb_pe_client/api/dashboard_report_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/device_connectivity_controller_api.py b/pe/tb_pe_client/api/device_connectivity_controller_api.py index 158134cd..2497c6d5 100644 --- a/pe/tb_pe_client/api/device_connectivity_controller_api.py +++ b/pe/tb_pe_client/api/device_connectivity_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/device_controller_api.py b/pe/tb_pe_client/api/device_controller_api.py index 2f56927d..c0600f4a 100644 --- a/pe/tb_pe_client/api/device_controller_api.py +++ b/pe/tb_pe_client/api/device_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/device_group_ota_package_controller_api.py b/pe/tb_pe_client/api/device_group_ota_package_controller_api.py index 547ec6e2..eb9171a5 100644 --- a/pe/tb_pe_client/api/device_group_ota_package_controller_api.py +++ b/pe/tb_pe_client/api/device_group_ota_package_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/device_profile_controller_api.py b/pe/tb_pe_client/api/device_profile_controller_api.py index 218b6af5..73616040 100644 --- a/pe/tb_pe_client/api/device_profile_controller_api.py +++ b/pe/tb_pe_client/api/device_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/domain_controller_api.py b/pe/tb_pe_client/api/domain_controller_api.py index 8b8a185e..29c65c7e 100644 --- a/pe/tb_pe_client/api/domain_controller_api.py +++ b/pe/tb_pe_client/api/domain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/edge_controller_api.py b/pe/tb_pe_client/api/edge_controller_api.py index dbe3d9bc..889cdf80 100644 --- a/pe/tb_pe_client/api/edge_controller_api.py +++ b/pe/tb_pe_client/api/edge_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/edge_event_controller_api.py b/pe/tb_pe_client/api/edge_event_controller_api.py index 6bddf85b..b5240635 100644 --- a/pe/tb_pe_client/api/edge_event_controller_api.py +++ b/pe/tb_pe_client/api/edge_event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/entities_version_control_controller_api.py b/pe/tb_pe_client/api/entities_version_control_controller_api.py index c4a00395..71bc1d9d 100644 --- a/pe/tb_pe_client/api/entities_version_control_controller_api.py +++ b/pe/tb_pe_client/api/entities_version_control_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/entity_group_controller_api.py b/pe/tb_pe_client/api/entity_group_controller_api.py index 49e7c3ac..bcb32a1c 100644 --- a/pe/tb_pe_client/api/entity_group_controller_api.py +++ b/pe/tb_pe_client/api/entity_group_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/entity_query_controller_api.py b/pe/tb_pe_client/api/entity_query_controller_api.py index 29aaeddf..c0deb27f 100644 --- a/pe/tb_pe_client/api/entity_query_controller_api.py +++ b/pe/tb_pe_client/api/entity_query_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/entity_relation_controller_api.py b/pe/tb_pe_client/api/entity_relation_controller_api.py index f35914a5..951dbace 100644 --- a/pe/tb_pe_client/api/entity_relation_controller_api.py +++ b/pe/tb_pe_client/api/entity_relation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/entity_view_controller_api.py b/pe/tb_pe_client/api/entity_view_controller_api.py index b240f6e5..1f5b2efa 100644 --- a/pe/tb_pe_client/api/entity_view_controller_api.py +++ b/pe/tb_pe_client/api/entity_view_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/event_controller_api.py b/pe/tb_pe_client/api/event_controller_api.py index 07e869e8..772dddbe 100644 --- a/pe/tb_pe_client/api/event_controller_api.py +++ b/pe/tb_pe_client/api/event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/group_permission_controller_api.py b/pe/tb_pe_client/api/group_permission_controller_api.py index 8b74aa84..5c9cc521 100644 --- a/pe/tb_pe_client/api/group_permission_controller_api.py +++ b/pe/tb_pe_client/api/group_permission_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/image_controller_api.py b/pe/tb_pe_client/api/image_controller_api.py index 38017e74..dc0512b1 100644 --- a/pe/tb_pe_client/api/image_controller_api.py +++ b/pe/tb_pe_client/api/image_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/integration_controller_api.py b/pe/tb_pe_client/api/integration_controller_api.py index 907305e9..0b025216 100644 --- a/pe/tb_pe_client/api/integration_controller_api.py +++ b/pe/tb_pe_client/api/integration_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -31,8 +31,8 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Dict, List, Optional +from pydantic import Field, StrictBool, StrictBytes, StrictInt, StrictStr, field_validator +from typing import Dict, List, Optional, Union from typing_extensions import Annotated from tb_pe_client.models.integration import Integration from tb_pe_client.models.integration_converters_info import IntegrationConvertersInfo @@ -916,6 +916,283 @@ def _delete_integration_serialize( + @validate_call + def export_integration_package( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> bytearray: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def export_integration_package_with_http_info( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[bytearray]: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def export_integration_package_without_preload_content( + self, + integration_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Export integration as IoT Hub package + + Returns a ZIP containing integration.json, uplink.json, optional downlink.json, and form.json. Sensitive fields are tokenized via @TemplateField annotations on the integration's runtime POJO. + + :param integration_id: (required) + :type integration_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._export_integration_package_serialize( + integration_id=integration_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "bytearray", + '400': "ThingsboardErrorResponse", + '401': "ThingsboardErrorResponse", + '403': "ThingsboardErrorResponse", + '404': "ThingsboardErrorResponse", + '429': "ThingsboardErrorResponse", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _export_integration_package_serialize( + self, + integration_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if integration_id is not None: + _path_params['integrationId'] = integration_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'ApiKeyForm', + 'HttpLoginForm' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/integration/{integrationId}/export-package', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def find_all_related_edges_missing_attributes( self, diff --git a/pe/tb_pe_client/api/job_controller_api.py b/pe/tb_pe_client/api/job_controller_api.py index 039a5358..e53c0f8e 100644 --- a/pe/tb_pe_client/api/job_controller_api.py +++ b/pe/tb_pe_client/api/job_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/login_endpoint_api.py b/pe/tb_pe_client/api/login_endpoint_api.py index 53ac1fba..2f173812 100644 --- a/pe/tb_pe_client/api/login_endpoint_api.py +++ b/pe/tb_pe_client/api/login_endpoint_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/lwm2m_controller_api.py b/pe/tb_pe_client/api/lwm2m_controller_api.py index 26180797..8872ee3d 100644 --- a/pe/tb_pe_client/api/lwm2m_controller_api.py +++ b/pe/tb_pe_client/api/lwm2m_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/mail_config_template_controller_api.py b/pe/tb_pe_client/api/mail_config_template_controller_api.py index 4fd2fd21..244b9f89 100644 --- a/pe/tb_pe_client/api/mail_config_template_controller_api.py +++ b/pe/tb_pe_client/api/mail_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/mobile_app_bundle_controller_api.py b/pe/tb_pe_client/api/mobile_app_bundle_controller_api.py index 46287fca..df42c378 100644 --- a/pe/tb_pe_client/api/mobile_app_bundle_controller_api.py +++ b/pe/tb_pe_client/api/mobile_app_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/mobile_app_controller_api.py b/pe/tb_pe_client/api/mobile_app_controller_api.py index 2b580188..0b837530 100644 --- a/pe/tb_pe_client/api/mobile_app_controller_api.py +++ b/pe/tb_pe_client/api/mobile_app_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/notification_controller_api.py b/pe/tb_pe_client/api/notification_controller_api.py index c24bd706..72410e69 100644 --- a/pe/tb_pe_client/api/notification_controller_api.py +++ b/pe/tb_pe_client/api/notification_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/notification_rule_controller_api.py b/pe/tb_pe_client/api/notification_rule_controller_api.py index 79d52330..fd5b386b 100644 --- a/pe/tb_pe_client/api/notification_rule_controller_api.py +++ b/pe/tb_pe_client/api/notification_rule_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/notification_target_controller_api.py b/pe/tb_pe_client/api/notification_target_controller_api.py index b672c1a2..c20ee835 100644 --- a/pe/tb_pe_client/api/notification_target_controller_api.py +++ b/pe/tb_pe_client/api/notification_target_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/notification_template_controller_api.py b/pe/tb_pe_client/api/notification_template_controller_api.py index 7168edba..f9a9602c 100644 --- a/pe/tb_pe_client/api/notification_template_controller_api.py +++ b/pe/tb_pe_client/api/notification_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/o_auth2_config_template_controller_api.py b/pe/tb_pe_client/api/o_auth2_config_template_controller_api.py index 2a82baf6..49dea804 100644 --- a/pe/tb_pe_client/api/o_auth2_config_template_controller_api.py +++ b/pe/tb_pe_client/api/o_auth2_config_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/o_auth2_controller_api.py b/pe/tb_pe_client/api/o_auth2_controller_api.py index 00870e4b..d296cf4c 100644 --- a/pe/tb_pe_client/api/o_auth2_controller_api.py +++ b/pe/tb_pe_client/api/o_auth2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ota_package_controller_api.py b/pe/tb_pe_client/api/ota_package_controller_api.py index 7b350069..cd317071 100644 --- a/pe/tb_pe_client/api/ota_package_controller_api.py +++ b/pe/tb_pe_client/api/ota_package_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/owner_controller_api.py b/pe/tb_pe_client/api/owner_controller_api.py index 758f4787..e2651122 100644 --- a/pe/tb_pe_client/api/owner_controller_api.py +++ b/pe/tb_pe_client/api/owner_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/qr_code_settings_controller_api.py b/pe/tb_pe_client/api/qr_code_settings_controller_api.py index d93f78b2..7420fdb4 100644 --- a/pe/tb_pe_client/api/qr_code_settings_controller_api.py +++ b/pe/tb_pe_client/api/qr_code_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/queue_controller_api.py b/pe/tb_pe_client/api/queue_controller_api.py index 1d69b50b..13a4d2f1 100644 --- a/pe/tb_pe_client/api/queue_controller_api.py +++ b/pe/tb_pe_client/api/queue_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/queue_stats_controller_api.py b/pe/tb_pe_client/api/queue_stats_controller_api.py index a16102b0..ea613b64 100644 --- a/pe/tb_pe_client/api/queue_stats_controller_api.py +++ b/pe/tb_pe_client/api/queue_stats_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/report_controller_api.py b/pe/tb_pe_client/api/report_controller_api.py index 44caf41a..afa19542 100644 --- a/pe/tb_pe_client/api/report_controller_api.py +++ b/pe/tb_pe_client/api/report_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/report_template_controller_api.py b/pe/tb_pe_client/api/report_template_controller_api.py index 848e0f55..210746c9 100644 --- a/pe/tb_pe_client/api/report_template_controller_api.py +++ b/pe/tb_pe_client/api/report_template_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/role_controller_api.py b/pe/tb_pe_client/api/role_controller_api.py index 2a75a620..1020e6ec 100644 --- a/pe/tb_pe_client/api/role_controller_api.py +++ b/pe/tb_pe_client/api/role_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/rpc_v1_controller_api.py b/pe/tb_pe_client/api/rpc_v1_controller_api.py index b3ab2c15..10cc7bb4 100644 --- a/pe/tb_pe_client/api/rpc_v1_controller_api.py +++ b/pe/tb_pe_client/api/rpc_v1_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/rpc_v2_controller_api.py b/pe/tb_pe_client/api/rpc_v2_controller_api.py index 776471ab..bfac7b9f 100644 --- a/pe/tb_pe_client/api/rpc_v2_controller_api.py +++ b/pe/tb_pe_client/api/rpc_v2_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/rule_chain_controller_api.py b/pe/tb_pe_client/api/rule_chain_controller_api.py index 7a508dd8..31bfa4de 100644 --- a/pe/tb_pe_client/api/rule_chain_controller_api.py +++ b/pe/tb_pe_client/api/rule_chain_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/rule_engine_controller_api.py b/pe/tb_pe_client/api/rule_engine_controller_api.py index 0cb183dd..479babcd 100644 --- a/pe/tb_pe_client/api/rule_engine_controller_api.py +++ b/pe/tb_pe_client/api/rule_engine_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/scheduler_event_controller_api.py b/pe/tb_pe_client/api/scheduler_event_controller_api.py index 69d3ab7b..28a0c1c2 100644 --- a/pe/tb_pe_client/api/scheduler_event_controller_api.py +++ b/pe/tb_pe_client/api/scheduler_event_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/secret_controller_api.py b/pe/tb_pe_client/api/secret_controller_api.py index f3edf876..50bf53ea 100644 --- a/pe/tb_pe_client/api/secret_controller_api.py +++ b/pe/tb_pe_client/api/secret_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/self_registration_controller_api.py b/pe/tb_pe_client/api/self_registration_controller_api.py index f2827371..c5bb5836 100644 --- a/pe/tb_pe_client/api/self_registration_controller_api.py +++ b/pe/tb_pe_client/api/self_registration_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/sign_up_controller_api.py b/pe/tb_pe_client/api/sign_up_controller_api.py index 0d01ad28..2249df3f 100644 --- a/pe/tb_pe_client/api/sign_up_controller_api.py +++ b/pe/tb_pe_client/api/sign_up_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/solution_controller_api.py b/pe/tb_pe_client/api/solution_controller_api.py deleted file mode 100644 index 5ddd38cc..00000000 --- a/pe/tb_pe_client/api/solution_controller_api.py +++ /dev/null @@ -1,1427 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -""" - ThingsBoard REST API - - ThingsBoard Professional Edition IoT platform REST API documentation. - - The version of the OpenAPI document: 4.3.1.2PE - Contact: info@thingsboard.io - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -import warnings -from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt -from typing import Any, Dict, List, Optional, Tuple, Union -from typing_extensions import Annotated - -from pydantic import Field, StrictStr -from typing import List -from typing_extensions import Annotated -from tb_pe_client.models.solution_install_response import SolutionInstallResponse -from tb_pe_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails -from tb_pe_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo -from tb_pe_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions - -from tb_pe_client.api_client import ApiClient, RequestSerialized -from tb_pe_client.api_response import ApiResponse -from tb_pe_client.rest import RESTResponseType - - -class SolutionControllerApi: - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None) -> None: - if api_client is None: - api_client = ApiClient.get_default() - self.api_client = api_client - - - @validate_call - def get_solution_template_details( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> TenantSolutionTemplateDetails: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_details_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[TenantSolutionTemplateDetails]: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_details_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution template details (getSolutionTemplateDetails) - - Get a solution template details based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_details_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateDetails", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_details_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/details/{solutionTemplateId}', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def get_solution_template_infos( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> List[TenantSolutionTemplateInfo]: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_infos_with_http_info( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[List[TenantSolutionTemplateInfo]]: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_infos_without_preload_content( - self, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution templates (getSolutionTemplateInfos) - - Get a list of solution template descriptors Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_infos_serialize( - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "List[TenantSolutionTemplateInfo]", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_infos_serialize( - self, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/infos', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def get_solution_template_instructions( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> TenantSolutionTemplateInstructions: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def get_solution_template_instructions_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[TenantSolutionTemplateInstructions]: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def get_solution_template_instructions_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get Solution Template Instructions (getSolutionTemplateInstructions) - - Get a solution template instructions based on the provided id Security check is performed to verify that the user has 'READ' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_solution_template_instructions_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "TenantSolutionTemplateInstructions", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _get_solution_template_instructions_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='GET', - resource_path='/api/solutions/templates/instructions/{solutionTemplateId}', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def install_solution_template( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> SolutionInstallResponse: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def install_solution_template_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[SolutionInstallResponse]: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def install_solution_template_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Install Solution Template (installSolutionTemplate) - - Install solution template based on the provided id Security check is performed to verify that the user has 'WRITE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._install_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': "SolutionInstallResponse", - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _install_solution_template_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='POST', - resource_path='/api/solutions/templates/{solutionTemplateId}/install', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - - - - @validate_call - def uninstall_solution_template( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> None: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - - @validate_call - def uninstall_solution_template_with_http_info( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[None]: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - - @validate_call - def uninstall_solution_template_without_preload_content( - self, - solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[ - Annotated[StrictFloat, Field(gt=0)], - Annotated[StrictFloat, Field(gt=0)] - ] - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Uninstall Solution Template (uninstallSolutionTemplate) - - Uninstall solution template based on the provided id Security check is performed to verify that the user has 'DELETE' permission for the entity (entities). - - :param solution_template_id: A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9' (required) - :type solution_template_id: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._uninstall_solution_template_serialize( - solution_template_id=solution_template_id, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index - ) - - _response_types_map: Dict[str, Optional[str]] = { - '200': None, - '400': "ThingsboardErrorResponse", - '401': "ThingsboardErrorResponse", - '403': "ThingsboardErrorResponse", - '404': "ThingsboardErrorResponse", - '429': "ThingsboardErrorResponse", - } - response_data = self.api_client.call_api( - *_param, - _request_timeout=_request_timeout - ) - return response_data.response - - - def _uninstall_solution_template_serialize( - self, - solution_template_id, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = { - } - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[ - str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] - ] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if solution_template_id is not None: - _path_params['solutionTemplateId'] = solution_template_id - # process the query parameters - # process the header parameters - # process the form parameters - # process the body parameter - - - # set the HTTP header `Accept` - if 'Accept' not in _header_params: - _header_params['Accept'] = self.api_client.select_header_accept( - [ - 'application/json' - ] - ) - - - # authentication setting - _auth_settings: List[str] = [ - 'ApiKeyForm', - 'HttpLoginForm' - ] - - return self.api_client.param_serialize( - method='DELETE', - resource_path='/api/solutions/templates/{solutionTemplateId}/delete', - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth - ) - - diff --git a/pe/tb_pe_client/api/solution_export_import_controller_api.py b/pe/tb_pe_client/api/solution_export_import_controller_api.py index e756f98c..cc8e9979 100644 --- a/pe/tb_pe_client/api/solution_export_import_controller_api.py +++ b/pe/tb_pe_client/api/solution_export_import_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/tb_resource_controller_api.py b/pe/tb_pe_client/api/tb_resource_controller_api.py index d98566c7..cdc9d775 100644 --- a/pe/tb_pe_client/api/tb_resource_controller_api.py +++ b/pe/tb_pe_client/api/tb_resource_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/telemetry_controller_api.py b/pe/tb_pe_client/api/telemetry_controller_api.py index c1de4fb6..8cea4b22 100644 --- a/pe/tb_pe_client/api/telemetry_controller_api.py +++ b/pe/tb_pe_client/api/telemetry_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/tenant_controller_api.py b/pe/tb_pe_client/api/tenant_controller_api.py index b92d4fb5..4470dada 100644 --- a/pe/tb_pe_client/api/tenant_controller_api.py +++ b/pe/tb_pe_client/api/tenant_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/tenant_profile_controller_api.py b/pe/tb_pe_client/api/tenant_profile_controller_api.py index 5afb2264..a54c24bc 100644 --- a/pe/tb_pe_client/api/tenant_profile_controller_api.py +++ b/pe/tb_pe_client/api/tenant_profile_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/translation_controller_api.py b/pe/tb_pe_client/api/translation_controller_api.py index bf4d579f..da289b94 100644 --- a/pe/tb_pe_client/api/translation_controller_api.py +++ b/pe/tb_pe_client/api/translation_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/trendz_api_controller_api.py b/pe/tb_pe_client/api/trendz_api_controller_api.py index 040d4afd..32675f52 100644 --- a/pe/tb_pe_client/api/trendz_api_controller_api.py +++ b/pe/tb_pe_client/api/trendz_api_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/trendz_controller_api.py b/pe/tb_pe_client/api/trendz_controller_api.py index c738e48d..dc2b0816 100644 --- a/pe/tb_pe_client/api/trendz_controller_api.py +++ b/pe/tb_pe_client/api/trendz_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/two_factor_auth_config_controller_api.py b/pe/tb_pe_client/api/two_factor_auth_config_controller_api.py index a0360147..4457ad5a 100644 --- a/pe/tb_pe_client/api/two_factor_auth_config_controller_api.py +++ b/pe/tb_pe_client/api/two_factor_auth_config_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/two_factor_auth_controller_api.py b/pe/tb_pe_client/api/two_factor_auth_controller_api.py index ba69279c..23ab121d 100644 --- a/pe/tb_pe_client/api/two_factor_auth_controller_api.py +++ b/pe/tb_pe_client/api/two_factor_auth_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/ui_settings_controller_api.py b/pe/tb_pe_client/api/ui_settings_controller_api.py index acc651d3..8ac3db0e 100644 --- a/pe/tb_pe_client/api/ui_settings_controller_api.py +++ b/pe/tb_pe_client/api/ui_settings_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/usage_info_controller_api.py b/pe/tb_pe_client/api/usage_info_controller_api.py index f9cfa878..9ae143b8 100644 --- a/pe/tb_pe_client/api/usage_info_controller_api.py +++ b/pe/tb_pe_client/api/usage_info_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/user_controller_api.py b/pe/tb_pe_client/api/user_controller_api.py index 2b38c819..2749613e 100644 --- a/pe/tb_pe_client/api/user_controller_api.py +++ b/pe/tb_pe_client/api/user_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/user_permissions_controller_api.py b/pe/tb_pe_client/api/user_permissions_controller_api.py index fe7337c7..02b01a02 100644 --- a/pe/tb_pe_client/api/user_permissions_controller_api.py +++ b/pe/tb_pe_client/api/user_permissions_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/white_labeling_controller_api.py b/pe/tb_pe_client/api/white_labeling_controller_api.py index b932250f..31bac701 100644 --- a/pe/tb_pe_client/api/white_labeling_controller_api.py +++ b/pe/tb_pe_client/api/white_labeling_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/widget_type_controller_api.py b/pe/tb_pe_client/api/widget_type_controller_api.py index fb93d511..030c47c2 100644 --- a/pe/tb_pe_client/api/widget_type_controller_api.py +++ b/pe/tb_pe_client/api/widget_type_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api/widgets_bundle_controller_api.py b/pe/tb_pe_client/api/widgets_bundle_controller_api.py index bc9fb170..4a83933f 100644 --- a/pe/tb_pe_client/api/widgets_bundle_controller_api.py +++ b/pe/tb_pe_client/api/widgets_bundle_controller_api.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/api_client.py b/pe/tb_pe_client/api_client.py index 6dfad2d8..5bf69190 100644 --- a/pe/tb_pe_client/api_client.py +++ b/pe/tb_pe_client/api_client.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/client.pyi b/pe/tb_pe_client/client.pyi index 74a5b27d..7c93adc4 100644 --- a/pe/tb_pe_client/client.pyi +++ b/pe/tb_pe_client/client.pyi @@ -89,7 +89,6 @@ from tb_pe_client.api.scheduler_event_controller_api import SchedulerEventContro from tb_pe_client.api.secret_controller_api import SecretControllerApi from tb_pe_client.api.self_registration_controller_api import SelfRegistrationControllerApi from tb_pe_client.api.sign_up_controller_api import SignUpControllerApi -from tb_pe_client.api.solution_controller_api import SolutionControllerApi from tb_pe_client.api.solution_export_import_controller_api import SolutionExportImportControllerApi from tb_pe_client.api.tb_resource_controller_api import TbResourceControllerApi from tb_pe_client.api.telemetry_controller_api import TelemetryControllerApi @@ -1838,6 +1837,10 @@ class ThingsboardClient: def delete_integration_with_http_info(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[None]: ... def delete_integration_without_preload_content(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... def _delete_integration_serialize(self, integration_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... + def export_integration_package(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> bytearray: ... + def export_integration_package_with_http_info(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[bytearray]: ... + def export_integration_package_without_preload_content(self, integration_id: StrictStr, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... + def _export_integration_package_serialize(self, integration_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... def find_all_related_edges_missing_attributes(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> str: ... def find_all_related_edges_missing_attributes_with_http_info(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[str]: ... def find_all_related_edges_missing_attributes_without_preload_content(self, integration_id: Annotated[StrictStr, Field(description="A string value representing the integration id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... @@ -2719,30 +2722,6 @@ class ThingsboardClient: def terms_of_use_accepted_without_preload_content(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... def _terms_of_use_accepted_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - # --- SolutionControllerApi --- - @property - def solution_controller(self) -> SolutionControllerApi: ... - def get_solution_template_details(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> TenantSolutionTemplateDetails: ... - def get_solution_template_details_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[TenantSolutionTemplateDetails]: ... - def get_solution_template_details_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_details_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_solution_template_infos(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> List[TenantSolutionTemplateInfo]: ... - def get_solution_template_infos_with_http_info(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[List[TenantSolutionTemplateInfo]]: ... - def get_solution_template_infos_without_preload_content(self, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_infos_serialize(self, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def get_solution_template_instructions(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> TenantSolutionTemplateInstructions: ... - def get_solution_template_instructions_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[TenantSolutionTemplateInstructions]: ... - def get_solution_template_instructions_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _get_solution_template_instructions_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def install_solution_template(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> SolutionInstallResponse: ... - def install_solution_template_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[SolutionInstallResponse]: ... - def install_solution_template_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _install_solution_template_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - def uninstall_solution_template(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> None: ... - def uninstall_solution_template_with_http_info(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> ApiResponse[None]: ... - def uninstall_solution_template_without_preload_content(self, solution_template_id: Annotated[StrictStr, Field(description="A string value representing the solution template id. For example, '784f394c-42b6-435a-983c-b7beff2784f9'")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], Tuple[ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)] ] ] = ..., _request_auth: Optional[Dict[StrictStr, Any]] = ..., _content_type: Optional[StrictStr] = ..., _headers: Optional[Dict[StrictStr, Any]] = ..., _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = ...) -> RESTResponseType: ... - def _uninstall_solution_template_serialize(self, solution_template_id, _request_auth, _content_type, _headers, _host_index) -> RequestSerialized: ... - # --- SolutionExportImportControllerApi --- @property def solution_export_import_controller(self) -> SolutionExportImportControllerApi: ... diff --git a/pe/tb_pe_client/configuration.py b/pe/tb_pe_client/configuration.py index 81d1b6a1..431b466b 100644 --- a/pe/tb_pe_client/configuration.py +++ b/pe/tb_pe_client/configuration.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) @@ -549,7 +549,7 @@ def to_debug_report(self) -> str: return "Python SDK Debug Report:\n"\ "OS: {env}\n"\ "Python Version: {pyversion}\n"\ - "Version of the API: 4.3.1.2PE\n"\ + "Version of the API: 4.3.1.3PE\n"\ "SDK Package Version: 1.0.0".\ format(env=sys.platform, pyversion=sys.version) diff --git a/pe/tb_pe_client/exceptions.py b/pe/tb_pe_client/exceptions.py index acfb34cd..d57b73a3 100644 --- a/pe/tb_pe_client/exceptions.py +++ b/pe/tb_pe_client/exceptions.py @@ -18,7 +18,7 @@ ThingsBoard Professional Edition IoT platform REST API documentation. - The version of the OpenAPI document: 4.3.1.2PE + The version of the OpenAPI document: 4.3.1.3PE Contact: info@thingsboard.io Generated by OpenAPI Generator (https://openapi-generator.tech) diff --git a/pe/tb_pe_client/models/__init__.py b/pe/tb_pe_client/models/__init__.py index cb1d830c..84910e58 100644 --- a/pe/tb_pe_client/models/__init__.py +++ b/pe/tb_pe_client/models/__init__.py @@ -801,9 +801,7 @@ "SolutionExportRequest", "SolutionExportResponse", "SolutionImportResult", - "SolutionInstallResponse", "SolutionStep", - "SolutionTemplateLevel", "SolutionValidationResult", "SpecificTimeSchedule", "SplitViewComponent", @@ -855,9 +853,6 @@ "TenantProfileData", "TenantProfileId", "TenantProfileQueueConfiguration", - "TenantSolutionTemplateDetails", - "TenantSolutionTemplateInfo", - "TenantSolutionTemplateInstructions", "TestSmsRequest", "TextAlignment", "ThingsboardCredentialsExpiredResponse", @@ -1750,9 +1745,7 @@ from tb_pe_client.models.solution_export_request import SolutionExportRequest from tb_pe_client.models.solution_export_response import SolutionExportResponse from tb_pe_client.models.solution_import_result import SolutionImportResult - from tb_pe_client.models.solution_install_response import SolutionInstallResponse from tb_pe_client.models.solution_step import SolutionStep - from tb_pe_client.models.solution_template_level import SolutionTemplateLevel from tb_pe_client.models.solution_validation_result import SolutionValidationResult from tb_pe_client.models.specific_time_schedule import SpecificTimeSchedule from tb_pe_client.models.split_view_component import SplitViewComponent @@ -1804,9 +1797,6 @@ from tb_pe_client.models.tenant_profile_data import TenantProfileData from tb_pe_client.models.tenant_profile_id import TenantProfileId from tb_pe_client.models.tenant_profile_queue_configuration import TenantProfileQueueConfiguration - from tb_pe_client.models.tenant_solution_template_details import TenantSolutionTemplateDetails - from tb_pe_client.models.tenant_solution_template_info import TenantSolutionTemplateInfo - from tb_pe_client.models.tenant_solution_template_instructions import TenantSolutionTemplateInstructions from tb_pe_client.models.test_sms_request import TestSmsRequest from tb_pe_client.models.text_alignment import TextAlignment from tb_pe_client.models.thingsboard_credentials_expired_response import ThingsboardCredentialsExpiredResponse @@ -2698,9 +2688,7 @@ "SolutionExportRequest": "tb_pe_client.models.solution_export_request", "SolutionExportResponse": "tb_pe_client.models.solution_export_response", "SolutionImportResult": "tb_pe_client.models.solution_import_result", - "SolutionInstallResponse": "tb_pe_client.models.solution_install_response", "SolutionStep": "tb_pe_client.models.solution_step", - "SolutionTemplateLevel": "tb_pe_client.models.solution_template_level", "SolutionValidationResult": "tb_pe_client.models.solution_validation_result", "SpecificTimeSchedule": "tb_pe_client.models.specific_time_schedule", "SplitViewComponent": "tb_pe_client.models.split_view_component", @@ -2752,9 +2740,6 @@ "TenantProfileData": "tb_pe_client.models.tenant_profile_data", "TenantProfileId": "tb_pe_client.models.tenant_profile_id", "TenantProfileQueueConfiguration": "tb_pe_client.models.tenant_profile_queue_configuration", - "TenantSolutionTemplateDetails": "tb_pe_client.models.tenant_solution_template_details", - "TenantSolutionTemplateInfo": "tb_pe_client.models.tenant_solution_template_info", - "TenantSolutionTemplateInstructions": "tb_pe_client.models.tenant_solution_template_instructions", "TestSmsRequest": "tb_pe_client.models.test_sms_request", "TextAlignment": "tb_pe_client.models.text_alignment", "ThingsboardCredentialsExpiredResponse": "tb_pe_client.models.thingsboard_credentials_expired_response", diff --git a/pe/tb_pe_client/models/solution_install_response.py b/pe/tb_pe_client/models/solution_install_response.py deleted file mode 100644 index 5a87997a..00000000 --- a/pe/tb_pe_client/models/solution_install_response.py +++ /dev/null @@ -1,118 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_pe_client.models.customer_id import CustomerId -from tb_pe_client.models.dashboard_id import DashboardId -from tb_pe_client.models.entity_group_id import EntityGroupId -from typing import Optional, Set -from typing_extensions import Self - -class SolutionInstallResponse(BaseModel): - """ - SolutionInstallResponse - """ # noqa: E501 - dashboard_group_id: Optional[EntityGroupId] = Field(default=None, description="Id of the group that contains main dashboard of the solution", serialization_alias="dashboardGroupId") - dashboard_id: Optional[DashboardId] = Field(default=None, description="Id of the main dashboard of the solution", serialization_alias="dashboardId") - public_id: Optional[CustomerId] = Field(default=None, description="Id of the public customer if solution has public entities", serialization_alias="publicId") - main_dashboard_public: Optional[StrictBool] = Field(default=None, description="Is the main dashboard public", serialization_alias="mainDashboardPublic") - details: Optional[StrictStr] = Field(default=None, description="Markdown with solution usage instructions") - success: Optional[StrictBool] = Field(default=None, description="Indicates that template was installed successfully") - __properties: ClassVar[List[str]] = ["dashboardGroupId", "dashboardId", "publicId", "mainDashboardPublic", "details", "success"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_group_id - if self.dashboard_group_id: - _dict['dashboardGroupId'] = self.dashboard_group_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of dashboard_id - if self.dashboard_id: - _dict['dashboardId'] = self.dashboard_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of public_id - if self.public_id: - _dict['publicId'] = self.public_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SolutionInstallResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboard_group_id": EntityGroupId.from_dict(obj["dashboardGroupId"]) if obj.get("dashboardGroupId") is not None else None, - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None, - "public_id": CustomerId.from_dict(obj["publicId"]) if obj.get("publicId") is not None else None, - "main_dashboard_public": obj.get("mainDashboardPublic"), - "details": obj.get("details"), - "success": obj.get("success") - }) - return _obj - - diff --git a/pe/tb_pe_client/models/solution_template_level.py b/pe/tb_pe_client/models/solution_template_level.py deleted file mode 100644 index a1b1e73b..00000000 --- a/pe/tb_pe_client/models/solution_template_level.py +++ /dev/null @@ -1,42 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class SolutionTemplateLevel(str, Enum): - """ - SolutionTemplateLevel - """ - - """ - allowed enum values - """ - MAKER = 'MAKER' - PROTOTYPE = 'PROTOTYPE' - STARTUP = 'STARTUP' - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of SolutionTemplateLevel from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/pe/tb_pe_client/models/tenant_solution_template_details.py b/pe/tb_pe_client/models/tenant_solution_template_details.py deleted file mode 100644 index 96095cb9..00000000 --- a/pe/tb_pe_client/models/tenant_solution_template_details.py +++ /dev/null @@ -1,115 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_pe_client.models.solution_template_level import SolutionTemplateLevel -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateDetails(BaseModel): - """ - TenantSolutionTemplateDetails - """ # noqa: E501 - id: Optional[StrictStr] = Field(default=None, description="ID of the solution template") - title: Optional[StrictStr] = Field(default=None, description="Template Title") - level: Optional[SolutionTemplateLevel] = Field(default=None, description="Level of the subscription that is required to unlock the template") - install_timeout_ms: Optional[StrictInt] = Field(default=None, description="Timeout for the installation UI to wait while template is installing", serialization_alias="installTimeoutMs") - tenant_telemetry_keys: Optional[List[StrictStr]] = Field(default=None, description="What keys to delete during template uninstall", serialization_alias="tenantTelemetryKeys") - tenant_attribute_keys: Optional[List[StrictStr]] = Field(default=None, description="What attributes to delete during template uninstall", serialization_alias="tenantAttributeKeys") - image_urls: Optional[List[StrictStr]] = Field(default=None, serialization_alias="imageUrls") - highlights: Optional[StrictStr] = None - description: Optional[StrictStr] = None - installed: Optional[StrictBool] = None - __properties: ClassVar[List[str]] = ["id", "title", "level", "installTimeoutMs", "tenantTelemetryKeys", "tenantAttributeKeys", "imageUrls", "highlights", "description", "installed"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateDetails from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "level": obj.get("level"), - "install_timeout_ms": obj.get("installTimeoutMs"), - "tenant_telemetry_keys": obj.get("tenantTelemetryKeys"), - "tenant_attribute_keys": obj.get("tenantAttributeKeys"), - "image_urls": obj.get("imageUrls"), - "highlights": obj.get("highlights"), - "description": obj.get("description"), - "installed": obj.get("installed") - }) - return _obj - - diff --git a/pe/tb_pe_client/models/tenant_solution_template_info.py b/pe/tb_pe_client/models/tenant_solution_template_info.py deleted file mode 100644 index 420dc9b9..00000000 --- a/pe/tb_pe_client/models/tenant_solution_template_info.py +++ /dev/null @@ -1,117 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_pe_client.models.solution_template_level import SolutionTemplateLevel -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateInfo(BaseModel): - """ - TenantSolutionTemplateInfo - """ # noqa: E501 - id: Optional[StrictStr] = Field(default=None, description="ID of the solution template") - title: Optional[StrictStr] = Field(default=None, description="Template Title") - level: Optional[SolutionTemplateLevel] = Field(default=None, description="Level of the subscription that is required to unlock the template") - install_timeout_ms: Optional[StrictInt] = Field(default=None, description="Timeout for the installation UI to wait while template is installing", serialization_alias="installTimeoutMs") - tenant_telemetry_keys: Optional[List[StrictStr]] = Field(default=None, description="What keys to delete during template uninstall", serialization_alias="tenantTelemetryKeys") - tenant_attribute_keys: Optional[List[StrictStr]] = Field(default=None, description="What attributes to delete during template uninstall", serialization_alias="tenantAttributeKeys") - preview_image_url: Optional[StrictStr] = Field(default=None, description="URL of the preview image", serialization_alias="previewImageUrl") - video_preview_image_url: Optional[StrictStr] = Field(default=None, description="Video preview image URL", serialization_alias="videoPreviewImageUrl") - preview_mp4_url: Optional[StrictStr] = Field(default=None, description="Video MP4 URL", serialization_alias="previewMp4Url") - preview_webm_url: Optional[StrictStr] = Field(default=None, description="Video WEBM URL", serialization_alias="previewWebmUrl") - installed: Optional[StrictBool] = Field(default=None, description="Indicates that template is already installed for the current tenant") - __properties: ClassVar[List[str]] = ["id", "title", "level", "installTimeoutMs", "tenantTelemetryKeys", "tenantAttributeKeys", "previewImageUrl", "videoPreviewImageUrl", "previewMp4Url", "previewWebmUrl", "installed"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "level": obj.get("level"), - "install_timeout_ms": obj.get("installTimeoutMs"), - "tenant_telemetry_keys": obj.get("tenantTelemetryKeys"), - "tenant_attribute_keys": obj.get("tenantAttributeKeys"), - "preview_image_url": obj.get("previewImageUrl"), - "video_preview_image_url": obj.get("videoPreviewImageUrl"), - "preview_mp4_url": obj.get("previewMp4Url"), - "preview_webm_url": obj.get("previewWebmUrl"), - "installed": obj.get("installed") - }) - return _obj - - diff --git a/pe/tb_pe_client/models/tenant_solution_template_instructions.py b/pe/tb_pe_client/models/tenant_solution_template_instructions.py deleted file mode 100644 index 427f9b67..00000000 --- a/pe/tb_pe_client/models/tenant_solution_template_instructions.py +++ /dev/null @@ -1,116 +0,0 @@ -# -# Copyright © 2026-2026 ThingsBoard, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from tb_pe_client.models.customer_id import CustomerId -from tb_pe_client.models.dashboard_id import DashboardId -from tb_pe_client.models.entity_group_id import EntityGroupId -from typing import Optional, Set -from typing_extensions import Self - -class TenantSolutionTemplateInstructions(BaseModel): - """ - TenantSolutionTemplateInstructions - """ # noqa: E501 - dashboard_group_id: Optional[EntityGroupId] = Field(default=None, description="Id of the group that contains main dashboard of the solution", serialization_alias="dashboardGroupId") - dashboard_id: Optional[DashboardId] = Field(default=None, description="Id of the main dashboard of the solution", serialization_alias="dashboardId") - public_id: Optional[CustomerId] = Field(default=None, description="Id of the public customer if solution has public entities", serialization_alias="publicId") - main_dashboard_public: Optional[StrictBool] = Field(default=None, description="Is the main dashboard public", serialization_alias="mainDashboardPublic") - details: Optional[StrictStr] = Field(default=None, description="Markdown with solution usage instructions") - __properties: ClassVar[List[str]] = ["dashboardGroupId", "dashboardId", "publicId", "mainDashboardPublic", "details"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model""" - return pprint.pformat(self.model_dump(by_alias=False, mode='json')) - - def __str__(self) -> str: - return self.to_str() - - def __repr__(self) -> str: - return self.to_str() - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return self.model_dump_json(by_alias=True, exclude_unset=True) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_group_id - if self.dashboard_group_id: - _dict['dashboardGroupId'] = self.dashboard_group_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of dashboard_id - if self.dashboard_id: - _dict['dashboardId'] = self.dashboard_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of public_id - if self.public_id: - _dict['publicId'] = self.public_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TenantSolutionTemplateInstructions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboard_group_id": EntityGroupId.from_dict(obj["dashboardGroupId"]) if obj.get("dashboardGroupId") is not None else None, - "dashboard_id": DashboardId.from_dict(obj["dashboardId"]) if obj.get("dashboardId") is not None else None, - "public_id": CustomerId.from_dict(obj["publicId"]) if obj.get("publicId") is not None else None, - "main_dashboard_public": obj.get("mainDashboardPublic"), - "details": obj.get("details") - }) - return _obj - -